unit thesnake;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
GameBoard: TPaintBox;
Timer1: TTimer;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
len, wid, speed, bX, bY, frX, frY : integer;
SnakeDirR, SnakeDirD, SnakeDirL, SnakeDirU : boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
wid := 10;
len := 90;
bX := 200;
bY := 50;
frX := bX + len;
frY := bY + wid;
speed := 2;
GameBoard.Canvas.Brush.Color := rgb(0,0,0);
GameBoard.Canvas.Rectangle(0,0,GameBoard.Width,GameBoard.Height);
GameBoard.Canvas.Brush.Color := rgb(0,255,8);
GameBoard.Canvas.Rectangle(bX,bY,frX,frY);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Timer1.Enabled then Timer1.Enabled := false else Timer1.Enabled := true
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if SnakeDirR then
begin
GameBoard.Canvas.Brush.Color := rgb(0,0,0);
GameBoard.Canvas.Rectangle(0,0,GameBoard.Width,GameBoard.Height);
GameBoard.Canvas.Brush.Color := rgb(0,255,8);
GameBoard.Canvas.Rectangle(bX,bY,frX,frY);
GameBoard.Canvas.Rectangle(bX-1,bY,bX,frY);
bX := bX + speed;
frX := bX + len;
frY := bY + wid;
end;
if SnakeDirD then
begin
GameBoard.Canvas.Brush.Color := rgb(0,0,0);
GameBoard.Canvas.Rectangle(0,0,GameBoard.Width,GameBoard.Height);
GameBoard.Canvas.Brush.Color := rgb(0,255,8);
GameBoard.Canvas.Rectangle(bX,bY,frX,frY);
GameBoard.Canvas.Rectangle(bX-1,bY,bX,frY);
bY := bY + speed;
frX := bX + len;
frY := bY + wid;
end;
if SnakeDirL then
begin
GameBoard.Canvas.Brush.Color := rgb(0,0,0);
GameBoard.Canvas.Rectangle(0,0,GameBoard.Width,GameBoard.Height);
GameBoard.Canvas.Brush.Color := rgb(0,255,8);
GameBoard.Canvas.Rectangle(bX,bY,frX,frY);
GameBoard.Canvas.Rectangle(bX-1,bY,bX,frY);
bX := bX - speed;
frX := bX + len;
frY := bY + wid;
end;
if SnakeDirU then
begin
GameBoard.Canvas.Brush.Color := rgb(0,0,0);
GameBoard.Canvas.Rectangle(0,0,GameBoard.Width,GameBoard.Height);
GameBoard.Canvas.Brush.Color := rgb(0,255,8);
GameBoard.Canvas.Rectangle(bX,bY,frX,frY);
GameBoard.Canvas.Rectangle(bX-1,bY,bX,frY);
bY := bY - speed;
frX := bX + len;
frY := bY + wid;
end;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
39 : begin SnakeDirR:=true; SnakeDirD:=false; SnakeDirL:=false; SnakeDirU:=false; end;
40 : begin SnakeDirD:=true; SnakeDirL:=false; SnakeDirU:=false; SnakeDirR:=false; end;
37 : begin SnakeDirL:=true; SnakeDirD:=false; SnakeDirR:=false; SnakeDirU:=false; end;
38 : begin SnakeDirU:=true; SnakeDirD:=false; SnakeDirL:=false; SnakeDirR:=false; end;
end;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
case key of
chr(39) : begin SnakeDirR:=true; SnakeDirD:=false; SnakeDirL:=false; SnakeDirU:=false; end;
chr(40) : begin SnakeDirD:=true; SnakeDirL:=false; SnakeDirU:=false; SnakeDirR:=false; end;
chr(37) : begin SnakeDirL:=true; SnakeDirD:=false; SnakeDirR:=false; SnakeDirU:=false; end;
chr(38) : begin SnakeDirU:=true; SnakeDirD:=false; SnakeDirL:=false; SnakeDirR:=false; end;
end;
end;
end.