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 » |