Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pomoc w implementacji AI - "Kółko i Krzyżyk"

Ostatnio zmodyfikowano 2018-04-01 20:55
Autor Wiadomość
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();
}
//---------------------------------------------------------------------------

P-170406
« 1 »
  Strona 1 z 1