InFanTILDA
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору void TForm1:: ris_hod_Comp(int short &x,int short &y){ if(x==0 && y==0){Image1->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==0 && y==1){Image2->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==0 && y==2){Image3->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==1 && y==0){Image4->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==1 && y==1){Image5->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==1 && y==2){Image6->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==2 && y==0){Image7->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==2 && y==1){Image8->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==2 && y==2){Image9->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} } форма:3 кнопки Первая кнопа Caption="Игра" Вторая кнопа Caption="Выход" Третья кнопа Caption="Переиграть". 9 компонентов TImage два компонента TRadioButton- крестики и нолики а код программы такой (описаны 2 файла): //ПЕРВЫЙ: Unit1.h:********************************************* //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include #include #include #include #include #include #include #include //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TBitBtn *BitBtn1; TBitBtn *BitBtn2; TBitBtn *BitBtn3; TImage *Image1; TImage *Image2; TImage *Image3; TImage *Image4; TImage *Image5; TImage *Image6; TImage *Image7; TImage *Image8; TImage *Image9; TRadioButton *RadioButton1; TRadioButton *RadioButton2; TBevel *Bevel1; TLabel *Label1; TPanel *Panel1; void __fastcall BitBtn2Click(TObject *Sender); void __fastcall BitBtn1Click(TObject *Sender); void __fastcall BitBtn3Click(TObject *Sender); void __fastcall Image1Click(TObject *Sender); void __fastcall Image2Click(TObject *Sender); void __fastcall Image3Click(TObject *Sender); void __fastcall Image4Click(TObject *Sender); void __fastcall Image5Click(TObject *Sender); void __fastcall Image6Click(TObject *Sender); void __fastcall Image7Click(TObject *Sender); void __fastcall Image8Click(TObject *Sender); void __fastcall Image9Click(TObject *Sender); void __fastcall RadioButton1Click(TObject *Sender); void __fastcall RadioButton2Click(TObject *Sender); private: // User declarations char hod_ris1[10]; char hod_ris2[10]; int mas [3][3]; void initiz(); void hod_User(int ris); void hod_Comp(); int proverka(); bool hod_kompa_func(int short &n); void ris_hod_Comp(int short &x,int short &y); void vigrish_User(); void vigrish_Comp(); void vigrish_Nichia(); void not_active_ramka(); public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif //ВТОРОЙ: Unit2.cpp:******************************************* //--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { strcpy(hod_ris1,"krest.bmp");strcpy(hod_ris2,"nolik.bmp"); } //************************************************************************************ void TForm1 :: not_active_ramka(){ for(int i=0;i<3;i++) for(int j=0;j<3;j++) mas[i][j]=3; } void TForm1::vigrish_User(){ not_active_ramka(); MessageBox(0,"Вы выиграли!!", "Сообщение",MB_OK|MB_ICONEXCLAMATION); } void TForm1::vigrish_Comp(){ not_active_ramka(); MessageBox(0,"Вы проиграли!!", "Сообщение",MB_OK|MB_ICONEXCLAMATION); } void TForm1::vigrish_Nichia(){ not_active_ramka(); MessageBox(0,"Ничья", "Сообщение",MB_OK|MB_ICONEXCLAMATION); } //---------------------------------------------------------------------------------- int TForm1 :: proverka(){ // Проверка поля... int short i=0,j=0,x=0,y=0,x1=0,y1=0; for(i=0;i<3;i++){ // на ничью for(j=0;j<3;j++){ if(mas[i][j]!=0) x+=1; if(mas[i][j]==0) y++; } if(y>0) break; if(x==9) return -4; // возвращаем -4 , если ничья<>BR> } // по горизонтали for(i=0;i<3;i++){ x=0;y=0; for(j=0;j<3;j++){ if(mas[i][j]==1) x+=1; if(mas[i][j]==2) y+=1; } if(x==3) return -1; // возвращаем -1, если выграл игрок(невозможно) if(y==3) return -2; // возвращаем -2 , если выграл комп } for(j=0;j<3;j++){ // по вертикали x=0;y=0; for(i=0;i<3;i++){ if(mas[i][j]==1) x+=1; if(mas[i][j]==2) y+=1; } if(x==3) return -1; // возвращаем -1, если выграл игрок(невозможно) if(y==3) return -2; // возвращаем -2 , если выграл комп } x=0;y=0;x1=0;y1=0; for(i=0;i<3;i++){ // по наклонным for(j=0;j<3;j++){ if(i==j){ if(mas[i][j]==1) x+=1; if(mas[i][j]==2) y+=1; } if((i+j)==2){ if(mas[i][j]==1) x1+=1; if(mas[i][j]==2) y1+=1; } } if(x==3) return -1; // возвращаем -1, если выграл игрок(невозможно) if(y==3) return -2; // возвращаем -2 , если выграл комп if(x1==3) return -1; // возвращаем -1, если выграл игрок(невозможно) if(y1==3) return -2; // возвращаем -2 , если выграл комп } return -3; // если ничего нет } //--------------------------------------------------------------------------------------- void TForm1:: ris_hod_Comp(int short &x,int short &y){ if(x==0 && y==0){Image1->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==0 && y==1){Image2->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==0 && y==2){Image3->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==1 && y==0){Image4->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==1 && y==1){Image5->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==1 && y==2){Image6->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==2 && y==0){Image7->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==2 && y==1){Image8->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} if(x==2 && y==2){Image9->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;} } bool TForm1:: hod_kompa_func(int short &n){ int short i=0,j=0,i1=0,j1=0,x=0; for(i=0;i<3;i++) // Сколько общих ходов было(в переменную "х"). for(j=0;j<3;j++) if(mas[i][j]!=0) x++; if(x<=2){ // Если меньше или равно 2, тогда... i=1;j=1; if(mas[i][j]==0){ // Если свободна "середина" , тогда ставим.. ris_hod_Comp(i,j); return true; } i=0;j=0; if(mas[i][j]==0){ // Если свободн левый верхний угол, тогда ставим ris_hod_Comp(i,j); return true; } } //--------- for(i=0;i<3;i++){ // По горизонтали x=0;j1=3; for(j=0;j<3;j++){ if(mas[i][j]==n) x++; if(mas[i][j]==0) j1=j; if(x==2 && j1!=3){ ris_hod_Comp(i,j1); return true; }// if... }// for(j... } // for(i... for(j=0;j<3;j++){ // По вертикали x=0;i1=3; for(i=0;i<3;i++){ if(mas[i][j]==n) x++; if(mas[i][j]==0) i1=i; if(x==2 && i1!=3){ ris_hod_Comp(i1,j); return true; }// if... }// for(i... } // for(j... int x2=0,x1=0,i2=0,j2=0; j1=3;j2=3; for(i=0;i<3;i++){ // По наклонным for(j=0;j<3;j++){ if(i==j){ if(mas[i][j]==n) x1+=1; // По "главной" наклонной if(mas[i][j]==0) {j1=j;i1=i;} } if((i+j)==2){ // По "побочной " наклонной if(mas[i][j]==n) x2+=1; if(mas[i][j]==0) {j2=j;i2=i;} } if(x1==2 && j1!=3){ ris_hod_Comp(i1,j1); return true; } if(j2!=3 && x2==2){ ris_hod_Comp(i2,j2); return true; } } // for... } //for... return false; // Если ничего не удалось сделать возвращаем "ложь" } void TForm1::hod_Comp(){ bool hod; int i,j; int prov=0; prov=proverka(); switch(prov){ case -1: {vigrish_User(); return;} case -2: {vigrish_Comp(); return;} case -4: {vigrish_Nichia();return;} } hod=hod_kompa_func(2); if(hod==false)hod=hod_kompa_func(1); if(hod==false){ srand((unsigned)time( NULL )); do{ i=rand()%3; j=rand()%3; } while(mas[i][j]!=0); ris_hod_Comp(i,j); } prov=proverka(); switch(prov){ case -1: {vigrish_User(); return;} case -2: {vigrish_Comp(); return;} case -4: {vigrish_Nichia();return;} } } //************************************************************************************ void TForm1::initiz(){ char hod_ris3[10]; memset(hod_ris3,0,9); strcpy(hod_ris3,"fon0.bmp"); Image1->Picture->LoadFromFile(hod_ris3); Image2->Picture->LoadFromFile(hod_ris3); Image3->Picture->LoadFromFile(hod_ris3); Image4->Picture->LoadFromFile(hod_ris3); Image5->Picture->LoadFromFile(hod_ris3); Image6->Picture->LoadFromFile(hod_ris3); Image7->Picture->LoadFromFile(hod_ris3); Image8->Picture->LoadFromFile(hod_ris3); Image9->Picture->LoadFromFile(hod_ris3); for(int i=0;i<3;i++) for(int j=0;j<3;j++) mas[i][j]=0; } void TForm1::hod_User(int ris){ switch(ris){ case 1:{if(mas[0][0]==0){Image1->Picture->LoadFromFile(hod_ris1); mas[0][0]=1;break;}else return;} case 2:{if(mas[0][1]==0){Image2->Picture->LoadFromFile(hod_ris1); mas[0][1]=1;break;}else return;} case 3:{if(mas[0][2]==0){Image3->Picture->LoadFromFile(hod_ris1); mas[0][2]=1;break;}else return;} case 4:{if(mas[1][0]==0){Image4->Picture->LoadFromFile(hod_ris1); mas[1][0]=1;break;}else return;} case 5:{if(mas[1][1]==0){Image5->Picture->LoadFromFile(hod_ris1); mas[1][1]=1;break;}else return;} case 6:{if(mas[1][2]==0){Image6->Picture->LoadFromFile(hod_ris1); mas[1][2]=1;break;}else return;} case 7:{if(mas[2][0]==0){Image7->Picture->LoadFromFile(hod_ris1); mas[2][0]=1;break;}else return;} case 8:{if(mas[2][1]==0){Image8->Picture->LoadFromFile(hod_ris1); mas[2][1]=1;break;}else return;} case 9:{if(mas[2][2]==0){Image9->Picture->LoadFromFile(hod_ris1); mas[2][2]=1;break;}else return;} } hod_Comp(); } void __fastcall TForm1::BitBtn1Click(TObject *Sender) { if(BitBtn1->Caption=="Старт"){ RadioButton1->Enabled=false; RadioButton2->Enabled=false; BitBtn1->Caption="В меню"; Panel1->Visible=false; initiz(); if (RadioButton1->Checked){ // ходит комп } return; } if(BitBtn1->Caption!="Старт"){ RadioButton1->Enabled=true; RadioButton2->Enabled=true; BitBtn1->Caption="Старт"; Panel1->Visible=true; return; } // TBitmap } void __fastcall TForm1::BitBtn2Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::BitBtn3Click(TObject *Sender) { initiz(); } //--------------------------------------------------------------------------- void __fastcall TForm1::RadioButton1Click(TObject *Sender) { memset(hod_ris1,0,9); memset(hod_ris2,0,9); strcpy(hod_ris1,"krest.bmp");strcpy(hod_ris2,"nolik.bmp"); } //--------------------------------------------------------------------------- void __fastcall TForm1::RadioButton2Click(TObject *Sender) { memset(hod_ris1,0,9); memset(hod_ris2,0,9); strcpy(hod_ris1,"nolik.bmp");strcpy(hod_ris2,"krest.bmp"); } //--------------------------------------------------------------------------- void __fastcall TForm1::Image1Click(TObject *Sender) { hod_User(1); } //--------------------------------------------------------------------------- void __fastcall TForm1::Image2Click(TObject *Sender) { hod_User(2); } //--------------------------------------------------------------------------- void __fastcall TForm1::Image3Click(TObject *Sender) { hod_User(3); } //--------------------------------------------------------------------------- void __fastcall TForm1::Image4Click(TObject *Sender) { hod_User(4); } //--------------------------------------------------------------------------- void __fastcall TForm1::Image5Click(TObject *Sender) { hod_User(5); } //--------------------------------------------------------------------------- void __fastcall TForm1::Image6Click(TObject *Sender) { hod_User(6); } //--------------------------------------------------------------------------- void __fastcall TForm1::Image7Click(TObject *Sender) { hod_User(7); } //--------------------------------------------------------------------------- void __fastcall TForm1::Image8Click(TObject *Sender) { hod_User(8); } //--------------------------------------------------------------------------- void __fastcall TForm1::Image9Click(TObject *Sender) { hod_User(9); } //---------------------------------------------------------------------------
Про тег more не слышали? | Всего записей: 5 | Зарегистр. 03-04-2006 | Отправлено: 10:26 20-12-2006 | Исправлено: ShIvADeSt, 01:30 27-12-2006 |
|