Form1: TForm1;
ar:mas;
b:mas;
cvet1:mas;
cvet2:mas;
x1,x3: Integer; y1,z: Integer;
sost:integer;
cv1,cv2:integer;
x_q,y_q:integer;
x_p,y_p:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for I := 0 to 9 do
begin
Image1.Canvas.MoveTo(i*40,0);
Image1.Canvas.LineTo(i*40,400);
end;
for I := 0 to 10 do
begin
Image1.Canvas.MoveTo(0,40*i);
Image1.Canvas.LineTo(360,40*i);
end;
newgame;
end;
procedure TForm1.newgame;
var i,j:integer;
begin
for I := 0 to 8 do
begin
for j := 0 to 9 do
ar[i,j]:=0;
b[i,j]:=0;
cvet1[i,j]:=clWhite;
cvet2[i,j]:=clWhite;
end;
sost:=1;
z:=0;
ris;
end;
procedure TForm1.ris;
var x2,y2:string;
i,k,x3,y3:integer;
begin
k:=0;
repeat
randomize;
case random(4) of
0:begin
Image1.Canvas.Pen.Color:=clred;
Image1.Canvas.Brush.Color:=clred;
end;
1:begin
Image1.Canvas.Pen.Color:=clYellow;
Image1.Canvas.Brush.Color:=clYellow;
end;
2:begin
Image1.Canvas.Pen.Color:=clblue;
Image1.Canvas.Brush.Color:=clblue;
end;
3:begin
Image1.Canvas.Pen.Color:=clgreen;
Image1.Canvas.Brush.Color:=clgreen;
end;
end;
randomize;
x1:=random(9);
y1:=random(10);
x2:=floattostr((x1+0.5)*40);
y2:=floattostr((y1+0.5)*40);
x3:=strtoint(x2);
y3:=strtoint(y2);
if (ar[x1,y1]=0) and (cvet1[x1,y1]<>clwhite) and ((cvet2[x1,y1]<>clwhite)) then
begin
Image1.Canvas.Ellipse(x3+10,y3+10,x3-10,y3-10);
ar[x1,y1]:=1;
cvet1[x1,y1]:=Image1.Canvas.Pen.Color;
cvet2[x1,y1]:=Image1.Canvas.brush.Color;
k:=k+1;
z:=z+1;
end;
until (k=3) or (z=90);
if z=90 then
showmessage('You Lose!!!');
end;
procedure Tform1.FindZero(x7,y7:integer);
var i,j:integer;
begin
for i:=x7-1 to x7+1 do
for j:=y7-1 to y7+1 do begin
if (i >= 0) and (i <9) and
(j >= 0) and (j <10) and (b[i,j]=0) and (ar[i,j]=0) then begin
if (i=x7-1) and (j=y7-1) then continue;
if (i=x7+1) and (j=y7-1) then continue;
if (i=x7+1) and (j=y7+1) then continue;
if (i=x7-1) and (j=y7+1) then continue;
b[i,j]:=1;
FindZero(i,j);
end;
end;
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var x2,y2:string;
x4,y4:integer;
w1,w2,i,j:integer;
begin
if (sost=1) then
begin
x4:=x div 40;
y4:=y div 40;
if ar[x4,y4]=1 then
begin
Image1.Canvas.Pen.Color:=clWhite;
Image1.Canvas.Brush.Color:=clWhite;
Image1.Canvas.FloodFill(x,y,clBlack,fsBorder);
sost:=0;
cv1:=cvet1[x4,y4];
cv2:=cvet2[x4,y4];
ar[x4,y4]:=0;
cvet1[x4,y4]:=clwhite;
cvet2[x4,y4]:=clwhite;
for I := 0 to 8 do
for j := 0 to 9 do
b[i,j]:=0;
findzero(x4,y4);
exit;
end
else
exit;
end;
if sost=0 then
begin
x4:=x div 40;
y4:=y div 40;
if ar[x4,y4]<>1 then
begin
x2:=floattostr((x4+0.5)*40);
y2:=floattostr((y4+0.5)*40);
x_q:=strtoint(x2);
y_q:=strtoint(y2);
if (b[x4,y4]=1) then
begin
Image1.Canvas.Pen.Color:=cv1;
Image1.Canvas.Brush.Color:=cv2;
Image1.Canvas.Ellipse(x_q+10,y_q+10,x_q-10,y_q-10);
sost:=1;
ar[x4,y4]:=1;
cvet1[x4,y4]:=Image1.Canvas.Pen.Color;
cvet2[x4,y4]:=Image1.Canvas.Brush.Color;
ris;
exit;
end;
end;
end;
end;
end.