Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit UnitCrossZero;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, ExtCtrls, ComCtrls, StdCtrls;
- type
- TForm1 = class(TForm)
- Panel10: TPanel;
- Panel1: TPanel;
- Panel2: TPanel;
- Panel3: TPanel;
- Panel4: TPanel;
- Panel5: TPanel;
- Panel6: TPanel;
- Panel7: TPanel;
- Panel8: TPanel;
- Panel9: TPanel;
- Panel11: TPanel;
- Panel13: TPanel;
- Panel14: TPanel;
- Player1Label: TLabel;
- Player1Name: TEdit;
- Player2Label: TLabel;
- Player2Name: TEdit;
- Label1: TLabel;
- Label2: TLabel;
- WinnerX: TLabel;
- WinnerO: TLabel;
- Button1: TButton;
- Button2: TButton;
- Panel12: TPanel;
- Button3: TButton;
- Button4: TButton;
- procedure Panel1Click(Sender: TObject);
- procedure Panel2Click(Sender: TObject);
- procedure Panel3Click(Sender: TObject);
- procedure Panel4Click(Sender: TObject);
- procedure Panel5Click(Sender: TObject);
- procedure Panel6Click(Sender: TObject);
- procedure Panel7Click(Sender: TObject);
- procedure Panel8Click(Sender: TObject);
- procedure Panel9Click(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure Button3Click(Sender: TObject);
- procedure Button4Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- //Flag для поочередного хода X и O
- //Если Flag=0 тогда вписываем X
- //Если Flag=1 тогда вписываем O
- Flag: Byte;
- implementation
- {$R *.dfm}
- //Процедура очистки поля для игры - Новая игра
- procedure Clean;
- begin
- Form1.Panel1.BevelInner:=bvNone; //Меняем стиль панели
- Form1.Panel1.Caption:=''; //Очищаем заголовок панели
- Form1.Panel2.BevelInner:=bvNone;
- Form1.Panel2.Caption:='';
- Form1.Panel3.BevelInner:=bvNone;
- Form1.Panel3.Caption:='';
- Form1.Panel4.BevelInner:=bvNone;
- Form1.Panel4.Caption:='';
- Form1.Panel5.BevelInner:=bvNone;
- Form1.Panel5.Caption:='';
- Form1.Panel6.BevelInner:=bvNone;
- Form1.Panel6.Caption:='';
- Form1.Panel7.BevelInner:=bvNone;
- Form1.Panel7.Caption:='';
- Form1.Panel8.BevelInner:=bvNone;
- Form1.Panel8.Caption:='';
- Form1.Panel9.BevelInner:=bvNone;
- Form1.Panel9.Caption:='';
- Flag:=0;
- end;
- //Вывод сообщения о победе
- procedure OutputWinner(W: String);
- begin
- if W = 'X' then begin
- ShowMessage(Form1.Label1.Caption + ' победитель!'); //Вывод победителя на экран
- Form1.WinnerX.Caption:=IntToStr(StrToInt(Form1.WinnerX.Caption)+1) //Подсчет количества побед Х
- end
- else begin
- ShowMessage(Form1.Label2.Caption + ' победитель!'); //Вывод победителя на экран
- Form1.WinnerO.Caption:=IntToStr(StrToInt(Form1.WinnerO.Caption)+1); //Подсчет количества побед O
- end;
- Clean; // Очистка игрового поля
- end;
- //Процедура проверки на выигрыш;
- procedure WinnerXO;
- var
- Win: String;
- begin
- try //Защита от непредвиденных ошибок
- //Проверяем заголовки, если выигрышная комбинация то присваиваем победителя Х или О. Первая вертикаль
- if (Form1.Panel1.Caption=Form1.Panel4.Caption) and (Form1.Panel1.Caption=Form1.Panel7.Caption) and (Form1.Panel1.Caption<>'') then begin
- Win:=Form1.Panel1.Caption;
- OutputWinner(Win);
- end;
- //Проверяем заголовки, если выигрышная комбинация то присваиваем победителя Х или О. Вторая вертикаль
- if (Form1.Panel2.Caption=Form1.Panel5.Caption) and (Form1.Panel2.Caption=Form1.Panel8.Caption) and (Form1.Panel2.Caption<>'') then begin
- Win:=Form1.Panel2.Caption;
- OutputWinner(Win);
- end;
- //Проверяем заголовки, если выигрышная комбинация то присваиваем победителя Х или О. Третья вертикаль
- if (Form1.Panel3.Caption=Form1.Panel6.Caption) and (Form1.Panel3.Caption=Form1.Panel9.Caption) and (Form1.Panel3.Caption<>'') then begin
- Win:=Form1.Panel9.Caption;
- OutputWinner(Win);
- end;
- //Проверяем заголовки, если выигрышная комбинация то присваиваем победителя Х или О. Первая горизонталь
- if (Form1.Panel1.Caption=Form1.Panel2.Caption) and (Form1.Panel1.Caption=Form1.Panel3.Caption) and (Form1.Panel1.Caption<>'') then begin
- Win:=Form1.Panel1.Caption;
- OutputWinner(Win);
- end;
- //Проверяем заголовки, если выигрышная комбинация то присваиваем победителя Х или О. Вторая горизонталь
- if (Form1.Panel4.Caption=Form1.Panel5.Caption) and (Form1.Panel4.Caption=Form1.Panel6.Caption) and (Form1.Panel4.Caption<>'') then begin
- Win:=Form1.Panel4.Caption;
- OutputWinner(Win);
- end;
- //Проверяем заголовки, если выигрышная комбинация то присваиваем победителя Х или О. Третья горизонталь
- if (Form1.Panel7.Caption=Form1.Panel8.Caption) and (Form1.Panel7.Caption=Form1.Panel9.Caption) and (Form1.Panel7.Caption<>'') then begin
- Win:=Form1.Panel7.Caption;
- OutputWinner(Win);
- end;
- //Проверяем заголовки, если выигрышная комбинация то присваиваем победителя Х или О. Первая диагональ
- if (Form1.Panel1.Caption=Form1.Panel5.Caption) and (Form1.Panel1.Caption=Form1.Panel9.Caption) and (Form1.Panel1.Caption<>'') then begin
- Win:=Form1.Panel1.Caption;
- OutputWinner(Win);
- end;
- //Проверяем заголовки, если выигрышная комбинация то присваиваем победителя Х или О. Вторая диагональ
- if (Form1.Panel3.Caption=Form1.Panel5.Caption) and (Form1.Panel3.Caption=Form1.Panel7.Caption) and (Form1.Panel3.Caption<>'') then begin
- Win:=Form1.Panel7.Caption;
- OutputWinner(Win);
- end;
- if (Form1.Panel1.Caption<>'') and (Form1.Panel2.Caption<>'') and (Form1.Panel3.Caption<>'') and (Form1.Panel4.Caption<>'') and (Form1.Panel5.Caption<>'') and (Form1.Panel6.Caption<>'') and (Form1.Panel7.Caption<>'') and (Form1.Panel8.Caption<>'') and (Form1.Panel9.Caption<>'') then begin
- ShowMessage ('Ничья! Сыграйте ещё раз!');
- Clean;
- end;
- except;
- end;
- end;
- //Процедура нажатие на панель
- procedure TForm1.Panel1Click(Sender: TObject);
- begin
- if Panel1.Caption<>'' then exit; //Проверка на то, что уже поставлено значение
- if Flag=0 then begin
- Panel1.Caption:='X'; //Выводим на панель (ставим) Х
- Flag:=1; //Чтобы следующий пошел O
- end
- else begin
- Panel1.Caption:='O'; //Выводим на панель (ставим) O
- Flag:=0; //Чтобы следующий пошел X
- end;
- WinnerXO; //Проверка на победу
- end;
- procedure TForm1.Panel2Click(Sender: TObject);
- begin
- if Panel2.Caption<>'' then exit;
- if Flag=0 then begin
- Panel2.Caption:='X';
- Flag:=1;
- end
- else begin
- Panel2.Caption:='O';
- Flag:=0;
- end;
- WinnerXO;
- end;
- procedure TForm1.Panel3Click(Sender: TObject);
- begin
- if Panel3.Caption<>'' then exit;
- if Flag=0 then begin
- Panel3.Caption:='X';
- Flag:=1;
- end
- else begin
- Panel3.Caption:='O';
- Flag:=0;
- end;
- WinnerXO;
- end;
- procedure TForm1.Panel4Click(Sender: TObject);
- begin
- if Panel4.Caption<>'' then exit;
- if Flag=0 then begin
- Panel4.Caption:='X';
- Flag:=1;
- end
- else begin
- Panel4.Caption:='O';
- Flag:=0;
- end;
- WinnerXO
- end;
- procedure TForm1.Panel5Click(Sender: TObject);
- begin
- if Panel5.Caption<>'' then exit;
- if Flag=0 then begin
- Panel5.Caption:='X';
- Flag:=1;
- end
- else begin
- Panel5.Caption:='O';
- Flag:=0;
- end;
- WinnerXO
- end;
- procedure TForm1.Panel6Click(Sender: TObject);
- begin
- if Panel6.Caption<>'' then exit;
- if Flag=0 then begin
- Panel6.Caption:='X';
- Flag:=1;
- end
- else begin
- Panel6.Caption:='O';
- Flag:=0;
- end;
- WinnerXO
- end;
- procedure TForm1.Panel7Click(Sender: TObject);
- begin
- if Panel7.Caption<>'' then exit;
- if Flag=0 then begin
- Panel7.Caption:='X';
- Flag:=1;
- end
- else begin
- Panel7.Caption:='O';
- Flag:=0;
- end;
- WinnerXO
- end;
- procedure TForm1.Panel8Click(Sender: TObject);
- begin
- if Panel8.Caption<>'' then exit;
- if Flag=0 then begin
- Panel8.Caption:='X';
- Flag:=1;
- end
- else begin
- Panel8.Caption:='O';
- Flag:=0;
- end;
- WinnerXO
- end;
- procedure TForm1.Panel9Click(Sender: TObject);
- begin
- if Panel9.Caption<>'' then exit;
- if Flag=0 then begin
- Panel9.Caption:='X';
- Flag:=1;
- end
- else begin
- Panel9.Caption:='O';
- Flag:=0;
- end;
- WinnerXO
- end;
- //Выход из программы
- procedure TForm1.Button4Click(Sender: TObject);
- begin
- Close;
- end;
- //Очистка поля для новой игры
- procedure TForm1.Button3Click(Sender: TObject);
- begin
- Clean;
- end;
- //Выход из программы
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- Close;
- end;
- //Процедура ввода имен игроков
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- if (Player1Name.Text='') or (Player2Name.Text='') then
- MessageBox(0,'Пожалуйста, заполните имя игроков!','Error!',mb_OK)
- else
- if (Player1Name.Text=Player2Name.Text) then
- MessageBox(0,'Имена игроков не должны совпадать!','Error!',mb_OK)
- else begin
- Player1Label.Caption:='Игрок крестиками';
- Label1.Caption:=Player1Name.Text;
- Label1.Visible:=True;
- Player2Label.Caption:='Игрок ноликами';
- Label2.Caption:=Player2Name.Text;
- Label2.Visible:=True;
- Player1Name.Visible:=False; //Скрываем поле для ввода имен
- Player2Name.Visible:=False; //Скрываем поле для ввода имен
- WinnerX.Visible:=True; //Отображаем количество побед крестиками
- WinnerO.Visible:=True; //Отображаем количество побед ноликами
- //Меняем вид формы
- Panel13.Height:=40;
- Panel14.Height:=40;
- Panel11.Height:=56;
- Button1.Visible:=False;
- Button2.Visible:=False;
- Form1.Height:=705;
- Panel10.Visible:=True;
- Panel12.Visible:=True;
- Form1.Position:=poScreenCenter; //Выводим форму по центру
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement