Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /---------------------------------------------------------------------------
- #include <vcl.h>
- #pragma hdrstop
- #include "Unit2.h"
- #include "Unit1.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma resource "*.dfm"
- TForm2 *Form2;
- const int FSIZE = 9;
- int Field[FSIZE] = {0};
- void AITurn();
- int w = 0, l = 0, d = 0;
- //---------------------------------------------------------------------------
- __fastcall TForm2::TForm2(TComponent* Owner)
- : TForm(Owner)
- {
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
- {
- Form1->Close();
- }
- //---------------------------------------------------------------------------
- void Outp()
- {
- if (Field[0] == 1) Form2->Panel1->Caption = 'X';
- if (Field[1] == 1) Form2->Panel2->Caption = 'X';
- if (Field[2] == 1) Form2->Panel3->Caption = 'X';
- if (Field[3] == 1) Form2->Panel4->Caption = 'X';
- if (Field[4] == 1) Form2->Panel5->Caption = 'X';
- if (Field[5] == 1) Form2->Panel6->Caption = 'X';
- if (Field[6] == 1) Form2->Panel7->Caption = 'X';
- if (Field[7] == 1) Form2->Panel8->Caption = 'X';
- if (Field[8] == 1) Form2->Panel9->Caption = 'X';
- if (Field[0] == 2) Form2->Panel1->Caption = 'O';
- if (Field[1] == 2) Form2->Panel2->Caption = 'O';
- if (Field[2] == 2) Form2->Panel3->Caption = 'O';
- if (Field[3] == 2) Form2->Panel4->Caption = 'O';
- if (Field[4] == 2) Form2->Panel5->Caption = 'O';
- if (Field[5] == 2) Form2->Panel6->Caption = 'O';
- if (Field[6] == 2) Form2->Panel7->Caption = 'O';
- if (Field[7] == 2) Form2->Panel8->Caption = 'O';
- if (Field[8] == 2) Form2->Panel9->Caption = 'O';
- }
- bool Diff(){
- for (int i = 1; i < 3; i++) {
- if (Field[0] == i && Field[1] == i && Field[2] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[3] == i && Field[4] == i && Field[5] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[6] == i && Field[7] == i && Field[8] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[0] == i && Field[2] == i && Field[1] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[3] == i && Field[5] == i && Field[4] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[6] == i && Field[8] == i && Field[7] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[1] == i && Field[2] == i && Field[0] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[5] == i && Field[5] == i && Field[3] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[8] == i && Field[8] == i && Field[6] == 0) {
- Field[2] = 2;
- return true;
- }
- ////
- if (Field[0] == i && Field[3] == i && Field[6] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[1] == i && Field[4] == i && Field[7] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[2] == i && Field[5] == i && Field[8] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[0] == i && Field[6] == i && Field[3] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[1] == i && Field[7] == i && Field[4] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[2] == i && Field[8] == i && Field[5] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[3] == i && Field[6] == i && Field[0] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[4] == i && Field[7] == i && Field[1] == 0) {
- Field[2] = 2;
- return true;
- }
- else
- if (Field[5] == i && Field[8] == i && Field[2] == 0) {
- Field[2] = 2;
- return true;
- }
- else if (i == 1) continue;
- else if (i == 2) return false;
- }
- }
- void NewGame()
- {
- for (int i = 0; i < 9; i++) {
- Field[i] = 0;
- }
- Form2->Panel1->Caption = "";
- Form2->Panel2->Caption = "";
- Form2->Panel3->Caption = "";
- Form2->Panel4->Caption = "";
- Form2->Panel5->Caption = "";
- Form2->Panel6->Caption = "";
- Form2->Panel7->Caption = "";
- Form2->Panel8->Caption = "";
- Form2->Panel9->Caption = "";
- if (Form2->CheckBox1->Checked == true) {
- AITurn();
- }
- Form2->Label3->Caption = IntToStr(w) + ':' + IntToStr(l) + ':' + IntToStr(d);
- }
- bool Winner(int k)
- {
- bool flag = true, nobody = true;
- if ((Field[0] == k && Field[1] == k && Field[2] == k) ||
- (Field[3] == k && Field[4] == k && Field[5] == k) ||
- (Field[6] == k && Field[7] == k && Field[8] == k) ||
- (Field[0] == k && Field[3] == k && Field[6] == k) ||
- (Field[1] == k && Field[4] == k && Field[7] == k) ||
- (Field[2] == k && Field[5] == k && Field[8] == k) ||
- (Field[0] == k && Field[4] == k && Field[8] == k) ||
- (Field[2] == k && Field[4] == k && Field[6] == k)) {
- if (k == 1) {
- MessageBoxA(NULL,"You win!", "Win!", MB_OK);
- flag = false;
- w++;
- }
- else
- if (k == 2) {
- MessageBoxA(NULL,"You lose!", "Lose!", MB_OK);
- flag = false;
- l++;
- }
- NewGame();
- }
- for (int i = 0; i < 9; i++) {
- if (Field[i] == 0) {
- nobody = false;
- }
- }
- if (nobody) {
- MessageBoxA(NULL,"It's a draw!", "Draw!", MB_OK);
- flag = false;
- d++;
- NewGame();
- }
- return flag;
- }
- void AITurn()
- {
- int n, count = 0;
- bool flag = true;
- srand(time(NULL));
- for (int i = 0; i < 9; i++) {
- if (Field[i] == 0) {
- count++;
- }
- }
- if (count > 0)
- if (Diff() == false)
- do {
- n = 0 + rand() % 8;
- if (Field[n] == 0) {
- Field[n] = 2;
- flag = False;
- }
- }
- while (flag);
- Outp();
- Winner(2);
- }
- void __fastcall TForm2::Panel1Click(TObject *Sender)
- {
- if (Field[0] == 0) {
- Field[0] = 1;
- Outp();
- if (Winner(1) == true)
- AITurn();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm2::Panel2Click(TObject *Sender)
- {
- if (Field[1] == 0) {
- Field[1] = 1;
- Outp();
- if (Winner(1) == true)
- AITurn();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm2::Panel3Click(TObject *Sender)
- {
- if (Field[2] == 0) {
- Field[2] = 1;
- Outp();
- if (Winner(1) == true)
- AITurn();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm2::Panel4Click(TObject *Sender)
- {
- if (Field[3] == 0) {
- Field[3] = 1;
- Outp();
- if (Winner(1) == true)
- AITurn();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm2::Panel5Click(TObject *Sender)
- {
- if (Field[4] == 0) {
- Field[4] = 1;
- Outp();
- if (Winner(1) == true)
- AITurn();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm2::Panel6Click(TObject *Sender)
- {
- if (Field[5] == 0) {
- Field[5] = 1;
- Outp();
- if (Winner(1) == true)
- AITurn();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm2::Panel7Click(TObject *Sender)
- {
- if (Field[6] == 0) {
- Field[6] = 1;
- Outp();
- if (Winner(1) == true)
- AITurn();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm2::Panel8Click(TObject *Sender)
- {
- if (Field[7] == 0) {
- Field[7] = 1;
- Outp();
- if (Winner(1) == true)
- AITurn();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm2::Panel9Click(TObject *Sender)
- {
- if (Field[8] == 0) {
- Field[8] = 1;
- Outp();
- if (Winner(1) == true)
- AITurn();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm2::Button1Click(TObject *Sender)
- {
- Form1->Show();
- Form2->Hide();
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm2::Button2Click(TObject *Sender)
- {
- NewGame();
- }
- //---------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement