unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, unit2, ExtCtrls, ComCtrls, unit3, StdCtrls, ImgList;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
FileMenuItem: TMenuItem;
NewMenuItem: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
InformationMenuItem: TMenuItem;
AboutMenuItem: TMenuItem;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Panel6: TPanel;
Panel7: TPanel;
Panel8: TPanel;
Panel9: TPanel;
Panel10: TPanel;
Timer1: TTimer;
ImageList1: TImageList;
procedureAboutMenuItemClick(Sender: TObject);
procedure Panel2Click(Sender: TObject);
procedure Panel5Click(Sender: TObject);
procedure Panel8Click(Sender: TObject);
procedure Panel3Click(Sender: TObject);
procedure Panel6Click(Sender: TObject);
procedure Panel9Click(Sender: TObject);
procedure Panel4Click(Sender: TObject);
procedure Panel7Click(Sender: TObject);
procedure Panel10Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedureNewMenuItemClick(Sender: TObject);
procedureFormCreate(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Implementation
{$R *.dfm}
procedureclean; // Процедура общего сброса ("Новая игра")
begin
Form1.Timer1.Enabled:=false; // Для надежности выключаем таймер
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:='';
Form1.Panel10.BevelInner:=bvNone;
Form1.Panel10.Caption:='';
Form1.Tag:=0;
Form1.Timer1.Enabled:=true; // Возобновляемработутаймера
end;
procedure TForm1.AboutMenuItemClick(Sender: TObject);
begin
Form2.ShowModal; // Вызываем окно "О программе"
end;
procedure TForm1.Panel2Click(Sender: TObject);
begin
if Panel2.Caption<>'' thenexit; // Проверка на заголовок панели (анти-мухлеж)
Panel2.BevelInner:=bvLowered; // Присваиваем стиль при нажатии на панель
if Form1.Tag=0
then// Меняем tag формы (для чередования X и O)
begin
Panel2.Caption:='X'; // если таг=0 тогда вписываем X
Form1.Tag:=1;
end
else
begin
Panel2.Caption:='O'; // еслитаг=1 тогдавписываемO
Form1.Tag:=0;
end;
end;
procedure TForm1.Panel5Click(Sender: TObject);
begin
if Panel5.Caption<>'' then exit;
Panel5.BevelInner:=bvLowered;
if Form1.Tag=0
then
begin
Panel5.Caption:='X';
Form1.Tag:=1;
end
else
begin
Panel5.Caption:='O';
Form1.Tag:=0;
end;
end;
procedure TForm1.Panel8Click(Sender: TObject);
begin
if Panel8.Caption<>'' then exit;
Panel8.BevelInner:=bvLowered;
if Form1.Tag=0
then
begin
Panel8.Caption:='X';
Form1.Tag:=1;
end
else
begin
Panel8.Caption:='O';
Form1.Tag:=0;
end;
end;
procedure TForm1.Panel3Click(Sender: TObject);
begin
if Panel3.Caption<>'' then exit;
Panel3.BevelInner:=bvLowered;
if form1.Tag=0
then
begin
Panel3.Caption:='X';
Form1.Tag:=1;
end
else
begin
Panel3.Caption:='O';
Form1.Tag:=0;
end;
end;
procedure TForm1.Panel6Click(Sender: TObject);
begin
if Panel6.Caption<>'' then exit;
Panel6.BevelInner:=bvLowered;
if form1.Tag=0
then
begin
Panel6.Caption:='X';
Form1.Tag:=1;
end
else
begin
Panel6.Caption:='O';
Form1.Tag:=0;
end;
end;
procedure TForm1.Panel9Click(Sender: TObject);
begin
if Panel9.Caption<>'' then exit;
Panel9.BevelInner:=bvLowered;
if form1.Tag=0
then
begin
Panel9.Caption:='X';
Form1.Tag:=1;
end
else
begin
Panel9.Caption:='O';
Form1.Tag:=0;
end;
end;
procedure TForm1.Panel4Click(Sender: TObject);
begin
if Panel4.Caption<>'' then exit;
Panel4.BevelInner:=bvLowered;
if Form1.Tag=0
then
begin
Panel4.Caption:='X';
Form1.Tag:=1;
end
else
begin
Panel4.Caption:='O';
Form1.Tag:=0;
end;
end;
procedure TForm1.Panel7Click(Sender: TObject);
begin
if Panel7.Caption<>'' then exit;
Panel7.BevelInner:=bvLowered;
if Form1.Tag=0
then
begin
Panel7.Caption:='X';
Form1.Tag:=1;
end
else
begin
Panel7.Caption:='O';
Form1.Tag:=0;
end;
end;
procedure TForm1.Panel10Click(Sender: TObject);
begin
if Panel10.Caption<>'' then exit;
Panel10.BevelInner:=bvLowered;
if Form1.Tag=0
then
begin
Panel10.Caption:='X';
Form1.Tag:=1;
end
else
begin
Panel10.Caption:='O';
Form1.Tag:=0;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject); // Процедурапроверкинавыигрыш;
begin
try // защита от непредвиденных ошибок
if (Panel2.BevelInner=bvLowered) and (Panel4.BevelInner=bvLowered) and (Panel3.BevelInner=bvLowered) then
// Еслипанелинажаты, топроверяемзаголовки
if (Panel2.Caption=Panel3.Caption) and (Panel2.Caption=Panel4.Caption)
then
begin
Form3.Label1.Caption:=Form1.Panel2.Caption; // ЕсливыигрышнаякомбинациятоприсваиваемХилиОвЛейблформыпоздравления
Form3.ShowModal; // Открываем окно поздравления ":-)"
clean; // Очистка игрового поля
end;
if (Panel7.BevelInner=bvLowered) and (Panel5.BevelInner=bvLowered) and (Panel6.BevelInner=bvLowered) then
if (Panel5.Caption=Panel6.Caption) and (Panel5.Caption=Panel7.Caption)
then
begin
Form3.Label1.Caption:=Form1.Panel5.Caption;
Form3.ShowModal;
clean;
end;
if (Panel9.BevelInner=bvLowered) and (Panel10.BevelInner=bvLowered) and (Panel8.BevelInner=bvLowered) then
if (Panel8.Caption=Panel9.Caption) and (Panel8.Caption=Panel10.Caption)
then
begin
Form3.Label1.Caption:=Form1.Panel10.Caption;
Form3.ShowModal;
clean;
end;
if (Panel5.BevelInner=bvLowered) and (Panel2.BevelInner=bvLowered) and (Panel8.BevelInner=bvLowered) then
if (Panel2.Caption=Panel5.Caption) and (Panel2.Caption=Panel8.Caption)
then
begin
Form3.Label1.Caption:=Form1.Panel2.Caption;
Form3.ShowModal;
clean;
end;
if (Panel9.BevelInner=bvLowered) and (Panel3.BevelInner=bvLowered) and (Panel6.BevelInner=bvLowered) then
if (Panel6.Caption=Panel3.Caption) and (Panel6.Caption=Panel9.Caption)
then
begin
Form3.Label1.Caption:=Form1.Panel3.Caption;
Form3.ShowModal;
clean;
end;
if (Panel4.BevelInner=bvLowered) and (Panel7.BevelInner=bvLowered) and (Panel10.BevelInner=bvLowered) then
if (Panel4.Caption=Panel7.Caption) and (Panel10.Caption=Panel4.Caption)
then
begin
Form3.Label1.Caption:=Form1.Panel4.Caption;
Form3.ShowModal;
clean;
end;
if (Panel6.BevelInner=bvLowered) and (Panel2.BevelInner=bvLowered) and (Panel10.BevelInner=bvLowered) then
if (Panel2.Caption=Panel6.Caption) and (Panel2.Caption=Panel10.Caption)
then
begin
Form3.Label1.Caption:=Form1.Panel2.Caption;
Form3.ShowModal;
clean;
end;
if (Panel6.BevelInner=bvLowered) and (Panel8.BevelInner=bvLowered) and (Panel4.BevelInner=bvLowered) then
if (Panel4.Caption=Panel6.Caption) and (Panel8.Caption=Panel4.Caption)
then
begin
Form3.Label1.Caption:=Form1.Panel4.Caption;
Form3.ShowModal;
clean;
end;
except;
end;
if (Panel2.BevelInner=bvLowered) and (Panel3.BevelInner=bvLowered) and (Panel4.BevelInner=bvLowered) and (Panel5.BevelInner=bvLowered) and (Panel6.BevelInner=bvLowered) and (Panel7.BevelInner=bvLowered) and (Panel8.BevelInner=bvLowered) and (Panel9.BevelInner=bvLowered) and (Panel10.BevelInner=bvLowered)
then
begin
Form1.Timer1.Enabled:=False;
ShowMessage ('Ничья, попробуйте ещё раз!');
clean;
end;
end;
procedure TForm1.NewMenuItemClick(Sender: TObject);
begin
clean; // Очистка игрового поля для новой игры
end;
procedure TForm1.FormCreate(Sender: TObject);
var
l:DWORD; // Процедура блокировки кнопки "Развернуть"
begin
l:=GetWindowLong(Self.Handle,GWL_STYLE);
l:=l and not(WS_MAXIMIZEBOX);
l:=SetWindowLong(Self.Handle,GWL_STYLE,l);
end;
procedure TForm1.N4Click(Sender: TObject);
begin
Close; // Выход из программы
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TForm2 = class(TForm)
Image1: TImage;
Label1: TLabel;
Label3: TLabel;
Label2: TLabel;
Label4: TLabel;
procedure Image1Click(Sender: TObject);
procedure Label1Click(Sender: TObject);
procedure Label2Click(Sender: TObject);
procedure Label3Click(Sender: TObject);
procedure Label4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
Implementation
{$R *.dfm}
procedure TForm2.Image1Click(Sender: TObject);
begin
Close; // Закрытие окна при нажатии на него
end;
procedure TForm2.Label1Click(Sender: TObject);
begin
Close;
end;
procedure TForm2.Label2Click(Sender: TObject);
begin
Close;
end;
procedure TForm2.Label3Click(Sender: TObject);
begin
Close;
end;
procedure TForm2.Label4Click(Sender: TObject);
begin
Close;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg;
type
TForm3 = class(TForm)
Image1: TImage;
Label3: TLabel;
Label2: TLabel;
Label1: TLabel;
procedureFormShow(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure Label1Click(Sender: TObject);
procedure Label2Click(Sender: TObject);
procedure Label3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm3.FormShow(Sender: TObject);
begin
Form1.Timer1.Enabled:=False; // Выключаемтаймер
end;
procedure TForm3.Image1Click(Sender: TObject);
begin
Close; // Закрытие окна при нажатии на него
end;
procedure TForm3.Label1Click(Sender: TObject);
begin
Close;
end;
procedure TForm3.Label2Click(Sender: TObject);
begin
Close;
end;
procedure TForm3.Label3Click(Sender: TObject);
begin
Close;
end;