Pomoc w implementacji AI - "Kółko i Krzyżyk"
Ostatnio zmodyfikowano 2018-04-01 20:55
| Cukiernik Temat założony przez niniejszego użytkownika | Pomoc w implementacji AI - "Kółko i Krzyżyk" » 2018-04-01 20:55:10 Witam Potrzebuję pomocy w dodaniu gracza komputerowego w prostej grze stworzonej w Bordlandzie. Jest to kod z kursu Mirosława Zelenta, zmodyfikowany przeze mnie. Powinny być 2 poziomy trudności, zwykły i nigdy nie przegrywający. Ponadto wykryłem również 2 problemy, mianowicie: -jednoczesny Remis i Wygrana przy zapełnieniu całej planszy -po restarcie rundy gra zostaje zakończona remisem po 9 ruchach Zdjęcie: https://zapodaj.net/f9ff2fbf22c29.png.html Kod Strony startowej: //---------------------------------------------------------------------------
 
 #include <vcl.h>
 #pragma hdrstop
 
 #include "Unit1.h"
 #include "Unit2.h"
 #include "Unit3.h"
 #include "Unit4.h"
 //---------------------------------------------------------------------------
 #pragma package(smart_init)
 #pragma resource "*.dfm"
 TForm1 *Form1;
 //---------------------------------------------------------------------------
 __fastcall TForm1::TForm1(TComponent* Owner)
 : TForm(Owner)
 {
 }
 //---------------------------------------------------------------------------
 void __fastcall TForm1::BitBtn1Click(TObject *Sender)
 {
 Form2->Show();
 Form1->Hide();
 }
 //---------------------------------------------------------------------------
 void __fastcall TForm1::BitBtn2Click(TObject *Sender)
 {
 Form3->Show();
 Form1->Hide();
 }
 //---------------------------------------------------------------------------
 void __fastcall TForm1::BitBtn3Click(TObject *Sender)
 {
 Form4->Show();
 Form1->Hide();
 }
 //---------
 
 Zdjęcie: https://zapodaj.net/8c100ab75f316.png.html Kod gry PvP: //---------------------------------------------------------------------------
 
 #include <vcl.h>
 #pragma hdrstop
 
 #include "Unit1.h"
 #include "Unit2.h"
 #include "Unit3.h"
 #include "Unit4.h"
 //---------------------------------------------------------------------------
 #pragma package(smart_init)
 #pragma resource "*.dfm"
 
 void setButtonsEnabled(bool enabled);
 
 TForm2 *Form2;
 
 char s1,s2,s3,s4,s5,s6,s7,s8,s9;
 //s od square, oznaczenia pól w grze, O ->puste lub x->krzyżyk lub o->kółko
 char gracz;
 int move=1;
 char * w;
 
 void REMIS()
 {
 move++;
 {
 if (move>=9)
 {
 Application->MessageBox("Remis!" , "Koniec gry", MB_OK);
 
 Form2->Image1->Enabled=false;
 Form2->Image2->Enabled=false;
 Form2->Image3->Enabled=false;
 Form2->Image4->Enabled=false;
 Form2->Image5->Enabled=false;
 Form2->Image6->Enabled=false;
 Form2->Image7->Enabled=false;
 Form2->Image8->Enabled=false;
 Form2->Image9->Enabled=false;
 
 }
 }
 }
 
 void WIN()
 {
 if((s1==s2 && s2==s3 && s1!='O') ||
 (s4==s5 && s5==s6 && s4!='O') ||
 (s7==s8 && s8==s9 && s7!='O') ||
 (s1==s4 && s4==s7 && s1!='O') ||
 (s2==s5 && s5==s8 && s2!='O') ||
 (s3==s6 && s6==s9 && s3!='O') ||
 (s1==s5 && s5==s9 && s1!='O') ||
 (s3==s5 && s5==s7 && s3!='O'))
 {
 
 if (gracz=='x') w="Wygrywa kółko!";
 if (gracz=='o') w="Wygrywa krzyżyk!";
 
 Application->MessageBox(w, "Koniec gry", MB_OK);
 
 Form2->Image1->Enabled=false;
 Form2->Image2->Enabled=false;
 Form2->Image3->Enabled=false;
 Form2->Image4->Enabled=false;
 Form2->Image5->Enabled=false;
 Form2->Image6->Enabled=false;
 Form2->Image7->Enabled=false;
 Form2->Image8->Enabled=false;
 Form2->Image9->Enabled=false;
 
 
 }
 }
 //---------------------------------------------------------------------------
 __fastcall TForm2::TForm2(TComponent* Owner)
 : TForm(Owner)
 {
 }
 //---------------------------------------------------------------------------
 //Poniżej znajduje się tablica czystych pól 3x3
 void __fastcall TForm2::FormCreate(TObject *Sender)
 {
 Image1->Picture->LoadFromFile("FLAT.bmp");
 Image2->Picture->LoadFromFile("FLAT.bmp");
 Image3->Picture->LoadFromFile("FLAT.bmp");
 Image4->Picture->LoadFromFile("FLAT.bmp");
 Image5->Picture->LoadFromFile("FLAT.bmp");
 Image6->Picture->LoadFromFile("FLAT.bmp");
 Image7->Picture->LoadFromFile("FLAT.bmp");
 Image8->Picture->LoadFromFile("FLAT.bmp");
 Image9->Picture->LoadFromFile("FLAT.bmp");
 Image10->Picture->LoadFromFile("SMALL_CROSS.bmp");
 
 
 //Wypełnianianie
 s1='O';
 s2='O';
 s3='O';
 s4='O';
 s5='O';
 s6='O';
 s7='O';
 s8='O';
 s9='O';
 
 setButtonsEnabled(true);
 gracz='x';
 move=1;
 }
 void setButtonsEnabled(bool enabled){
 Form2->Image1->Enabled=enabled;
 Form2->Image2->Enabled=enabled;
 Form2->Image3->Enabled=enabled;
 Form2->Image4->Enabled=enabled;
 Form2->Image5->Enabled=enabled;
 Form2->Image6->Enabled=enabled;
 Form2->Image7->Enabled=enabled;
 Form2->Image8->Enabled=enabled;
 Form2->Image9->Enabled=enabled;
 }
 //--------------------------------------------------------------------------
 void __fastcall TForm2::Image1Click(TObject *Sender)
 {
 if(s1=='O')  //jeżeli pole jest puste
 {
 if(gracz=='x') //jeżeli graczem jest x
 {
 Image1->Picture->LoadFromFile("CROSS.bmp");
 s1='x';
 gracz='o';
 Image10->Picture->LoadFromFile("SMALL_SPOT.bmp");
 Image1->Enabled-false;
 }
 else
 {
 Image1->Picture->LoadFromFile("SPOT.bmp");
 s1='o';
 gracz='x';
 Image10->Picture->LoadFromFile("SMALL_CROSS.bmp");
 Image1->Enabled-false;
 }
 WIN();
 }
 REMIS();
 }
 //---------------------------------------------------------------------------
 void __fastcall TForm2::Image2Click(TObject *Sender)
 {
 if(s2=='O')  //jeżeli pole jest puste
 {
 if(gracz=='x') //jeżeli graczem jest x
 {
 Image2->Picture->LoadFromFile("CROSS.bmp");
 s2='x';
 gracz='o';
 Image10->Picture->LoadFromFile("SMALL_SPOT.bmp");
 Image2->Enabled-false;
 }
 else
 {
 Image2->Picture->LoadFromFile("SPOT.bmp");
 s2='o';
 gracz='x';
 Image10->Picture->LoadFromFile("SMALL_CROSS.bmp");
 Image2->Enabled-false;
 }
 WIN();
 }
 REMIS();
 }
 //---------------------------------------------------------------------------
 
 void __fastcall TForm2::Image3Click(TObject *Sender)
 {
 if(s3=='O')  //jeżeli pole jest puste
 {
 if(gracz=='x') //jeżeli graczem jest x
 {
 Image3->Picture->LoadFromFile("CROSS.bmp");
 s3='x';
 gracz='o';
 Image10->Picture->LoadFromFile("SMALL_SPOT.bmp");
 Image3->Enabled-false;
 }
 else
 {
 Image3->Picture->LoadFromFile("SPOT.bmp");
 s3='o';
 gracz='x';
 Image10->Picture->LoadFromFile("SMALL_CROSS.bmp");
 Image3->Enabled-false;
 }
 WIN();
 }
 REMIS();
 }
 //---------------------------------------------------------------------------
 
 void __fastcall TForm2::Image4Click(TObject *Sender)
 {
 if(s4=='O')  //jeżeli pole jest puste
 {
 if(gracz=='x') //jeżeli graczem jest x
 {
 Image4->Picture->LoadFromFile("CROSS.bmp");
 s4='x';
 gracz='o';
 Image10->Picture->LoadFromFile("SMALL_SPOT.bmp");
 Image4->Enabled-false;
 }
 else
 {
 Image4->Picture->LoadFromFile("SPOT.bmp");
 s4='o';
 gracz='x';
 Image10->Picture->LoadFromFile("SMALL_CROSS.bmp");
 Image4->Enabled-false;
 }
 WIN();
 }
 REMIS();
 }
 //---------------------------------------------------------------------------
 
 void __fastcall TForm2::Image5Click(TObject *Sender)
 {
 if(s5=='O')  //jeżeli pole jest puste
 {
 if(gracz=='x') //jeżeli graczem jest x
 {
 Image5->Picture->LoadFromFile("CROSS.bmp");
 s5='x';
 gracz='o';
 Image10->Picture->LoadFromFile("SMALL_SPOT.bmp");
 Image5->Enabled-false;
 }
 else
 {
 Image5->Picture->LoadFromFile("SPOT.bmp");
 s5='o';
 gracz='x';
 Image10->Picture->LoadFromFile("SMALL_CROSS.bmp");
 Image5->Enabled-false;
 }
 WIN();
 }
 REMIS();
 }
 //---------------------------------------------------------------------------
 
 void __fastcall TForm2::Image6Click(TObject *Sender)
 {
 if(s6=='O')  //jeżeli pole jest puste
 {
 if(gracz=='x') //jeżeli graczem jest x
 {
 Image6->Picture->LoadFromFile("CROSS.bmp");
 s6='x';
 gracz='o';
 Image10->Picture->LoadFromFile("SMALL_SPOT.bmp");
 Image6->Enabled-false;
 }
 else
 {
 Image6->Picture->LoadFromFile("SPOT.bmp");
 s6='o';
 gracz='x';
 Image10->Picture->LoadFromFile("SMALL_CROSS.bmp");
 Image6->Enabled-false;
 }
 WIN();
 }
 REMIS();
 }
 //---------------------------------------------------------------------------
 
 void __fastcall TForm2::Image7Click(TObject *Sender)
 {
 if(s7=='O')  //jeżeli pole jest puste
 {
 if(gracz=='x') //jeżeli graczem jest x
 {
 Image7->Picture->LoadFromFile("CROSS.bmp");
 s7='x';
 gracz='o';
 Image10->Picture->LoadFromFile("SMALL_SPOT.bmp");
 Image7->Enabled-false;
 }
 else
 {
 Image7->Picture->LoadFromFile("SPOT.bmp");
 s7='o';
 gracz='x';
 Image10->Picture->LoadFromFile("SMALL_CROSS.bmp");
 Image7->Enabled-false;
 }
 WIN();
 }
 REMIS();
 }
 //---------------------------------------------------------------------------
 
 void __fastcall TForm2::Image8Click(TObject *Sender)
 {
 if(s8=='O')  //jeżeli pole jest puste
 {
 if(gracz=='x') //jeżeli graczem jest x
 {
 Image8->Picture->LoadFromFile("CROSS.bmp");
 s8='x';
 gracz='o';
 Image10->Picture->LoadFromFile("SMALL_SPOT.bmp");
 Image8->Enabled-false;
 }
 else
 {
 Image8->Picture->LoadFromFile("SPOT.bmp");
 s8='o';
 gracz='x';
 Image10->Picture->LoadFromFile("SMALL_CROSS.bmp");
 Image8->Enabled-false;
 }
 WIN();
 }
 REMIS();
 }
 //---------------------------------------------------------------------------
 
 void __fastcall TForm2::Image9Click(TObject *Sender)
 {
 if(s9=='O')  //jeżeli pole jest puste
 {
 if(gracz=='x') //jeżeli graczem jest x
 {
 Image9->Picture->LoadFromFile("CROSS.bmp");
 s9='x';
 gracz='o';
 Image10->Picture->LoadFromFile("SMALL_SPOT.bmp");
 Image9->Enabled-false;
 }
 else
 {
 Image9->Picture->LoadFromFile("SPOT.bmp");
 s9='o';
 gracz='x';
 Image10->Picture->LoadFromFile("SMALL_CROSS.bmp");
 Image9->Enabled-false;
 }
 WIN();
 }
 REMIS();
 }
 //---------------------------------------------------------------------------
 
 
 | 
|  | 
| « 1 » |