Иллюстрированный самоучитель по Kylix

       

Листинг игровой программы "Крестикинолики"



Листинг 13.29.Листинг игровой программы "Крестики-нолики"

unit Unit1;

interface

uses
SysUtils, Types, Classes, Variants, QGraphics, QControlS, QForms, QDialogs,
QStdCtrls;

type
TForm1 = class (TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);


procedure Button2Click(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);

private

{ Private declarations }

public

{ Public declarations }

end;

var
Form1: TForm1;
f:boolean; // Флаг, указывающий, что ставится: крестик
// или нолик
implementation {$R *.xfm}
procedure TForm1.Button1Click(Sender; TObject); var
i:integer; begin
// Рисуем прямоугольную область, закрашенную белым цветом Canvas.FillRect(rect(10,10,210,210)); i:=10; //Рисуем горизонтальные линии клеточек сетки 10x10 while i<=210 do begin
Canvas.MoveTo(10, i);
Canvas.LineTo(210,1);
i:=i+20; end; i:=10;
// Рисуем вертикальные линии клеточек сетки 10x10 while i<=210 do begin
Canvas.MoveTo(i,10); Canvas.LineTo(i, 210) ;
i :=i+20; end; end;
procedure TForm1.Button2Click{Sender: TObject); begin
Form1.Close; // Закрытие приложения end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Var
x1,y1:integer; begin
// Проверяем, в какой области формы щелкнул мышкой пользователь // Если в области сетки, то
if (х>10) and (x<210) and (у>10) and (y<210) then begin
// Вычисляем координаты левого верхнего угла клеточки, // внутри которой щелкнул пользователь x1:=trunc((х-10)/20)*20+10; y1:=trunc( (у-10) /20) *20+10; // Проверяем, что ставить: крестик или нолик f:=not(f); if f=true then begin // Если нолик, то
canvas.Pen.Color:=clRed; canvas.Pen.Width:=2; canvas.Ellipse(x1,y1,x1+20,y1+20); end else begin // Иначе - крестик
canvas.Pen.Color:=clBlue; canvas.Pen.Width:=2; canvas.MoveTo(x1,y1); canvas. LineTo (x1+20,y1+20); canvas.MoveTo(x1+20,y1); canvas.LineTo(x1, y1+20) ; end; end;
end; end.

Теперь запустим программу. Нажмите кнопку Начать игру, и программа нарисует белый прямоугольник и сетку 10x10 (Рисунок 13.11).



Содержание раздела