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;