procedure TForm1.Timer1Timer(Sender: TObject);
var
i,j : integer;
begin
bmp.canvas.Pen.Color := clwhite;
bmp.canvas.Rectangle(0,0,500,500);
for i := 1 to 14 do
for j := 1 to 8 do
begin
bmp.canvas.Pen.Color := clblack;
bmp.canvas.Ellipse(j*25-1,i*25-1,j*25+1,i*25+1);
if map2[i,j,1] = false then
begin
bmp.canvas.MoveTo(j*25,i*25);
bmp.canvas.LineTo(j*25+25,i*25-25);
end;
if map2[i,j,2] = false then
begin
bmp.canvas.MoveTo(j*25,i*25);
bmp.canvas.LineTo(j*25+25,i*25);
end;
if map2[i,j,3] = false then
begin
bmp.canvas.MoveTo(j*25,i*25);
bmp.canvas.LineTo(j*25+25,i*25+25);
end;
if map2[i,j,4] = false then
begin
bmp.canvas.MoveTo(j*25,i*25);
bmp.canvas.LineTo(j*25,i*25+25);
end;
end;
paintbox1.canvas.Draw(0,0,bmp);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i,j,k : integer;
begin
bmp := TBitmap.Create;
form1.DoubleBuffered:=true;
posY:= 8;
posX := 5;
for i := 2 to 13 do
for j := 2 to 7 do
for k := 1 to 4 do
map2[i,j,k]:= true;
for i := 1 to 13 do map2[i,2,4]:= false;
for j := 1 to 8 do
begin
map2[1,j,1]:= true;
map2[2,j,1]:= false;
map2[2,j,2]:= false;
map2[14,j,1]:= true;
if (j <> 4)and (j <> 5) then
begin
for k := 1 to 4 do map2[2,j,k]:= false;
map2[3,j,1]:= false;
map2[3,j,2]:= false;
map2[14,j,1]:= false;
map2[13,j,3]:= false;
map2[13,j,2]:= false;
map2[13,j,4]:= false;
map2[14,j,2]:= false;
end;
end;
map2[2,4,4]:= false;
map2[13,4,4]:= false;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = '1') and (map2[posY+1,posX-1,1] = true) then
begin
map2[posY+1,posX-1,1] := false;
PosY := posY+1;
PosX := posX-1;
end;
if (Key = '2') and (map2[posY,posX,4] = true) then
begin
map2[posY,posX,4] := false;
PosY := posY+1;
end;
if (Key = '3') and (map2[posY,posX,3] = true) then
begin
map2[posY,posX,3] := false;
PosY := posY+1;
PosX := posX+1;
end;
if (Key = '4') and (map2[posY,posX-1,2] = true) then
begin
map2[posY,posX-1,2] := false;
PosX := posX-1;
end;
if (Key = '6') and (map2[posY,posX,2] = true) then
begin
map2[posY,posX,2] := false;
PosX := posX+1;
end;
if (Key = '7') and (map2[posY-1,posX-1,3] = true) then
begin
map2[posY-1,posX-1,3] := false;
PosY := posY-1;
PosX := posX-1;
end;
if (Key = '8') and (map2[posY-1,posX,4] = true) then
begin
map2[posY-1,posX,4] := false;
PosY := posY-1;
end;
if (Key = '9') and (map2[posY,posX,1] = true) then
begin
map2[posY,posX,1] := false;
PosY := posY-1;
PosX := posX+1;
end;
end;
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
paintbox1.canvas.Ellipse(x-4,y-4,x+4,y+4);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
bmp.Free
end;