unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, pngimage, pngextra, pnglang, ExtCtrls, StdCtrls;
type
TForm2 =
class(TForm)
Image1: TImage;
Timer1: TTimer;
Button1: TButton;
Timer2: TTimer;
Timer3: TTimer;
Timer4: TTimer;
Timer5: TTimer;
Timer6: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure Timer4Timer(Sender: TObject);
procedure Timer5Timer(Sender: TObject);
procedure Timer6Timer(Sender: TObject);
procedure Timer7Timer(Sender: TObject);
procedure Timer8Timer(Sender: TObject);
procedure FormKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
TYPE Tfeld =
//REcord für das Spielfeld wird angelegt
record
Bild: TImage;
Name:
String;
End;
var feld:
array [1..17,1..13]
of Tfeld;
//array für Spielfeld wird angelegt
var x,y,x2,y2 : integer;
TYPE Tsnake =
//record für die Schlange
record
x1 : integer;
y1 : integer;
end;
var snake:
array [1..12]
of Tsnake;
var olddirection, direction, dup, dright, ddown, dleft:
string;
//hilfvariabeln für die Richtung
var längesnake: integer;
//____________________Spielfeld______________________________________________________________________________________________
procedure init;
var i : integer;
begin
i:=1;
randomize;
for x:=1
to 13
do
begin;
for y:=1
to 17
do
begin;
feld[x,y].
Name := '
Gras';
feld[x,y].Bild := Timage.create(Form2);
feld[x,y].Bild.parent := Form2;
feld[x,y].Bild.top := x*50;
feld[x,y].Bild.left := y*50;
feld[x,y].Bild.Picture.LoadFromFile('
images/gras.PNG');
//Gras laden
end;
end;
for y:= 1
to 17
do
begin;
for x:=1
to 13
do
begin;
If (y = 1)
or (y = 17)
then
begin;
feld[x,y].
Name := '
Wand';
feld[x,y].Bild := Timage.create(Form2);
feld[x,y].Bild.parent := Form2;
feld[x,y].Bild.top := x*50;
feld[x,y].Bild.left := y*50;
feld[x,y].Bild.Picture.LoadFromFile('
images/wand-hoch.PNG')
//Wand rechts und links laden
end;
end;
end;
for x:= 1
to 13
do
begin;
for y:=1
to 17
do
begin;
If (x = 1)
or(x = 13)
then
begin;
feld[x,y].
Name := '
Wand';
feld[x,y].Bild := Timage.create(Form2);
feld[x,y].Bild.parent := Form2;
feld[x,y].Bild.top := x*50;
feld[x,y].Bild.left := y*50;
feld[x,y].Bild.Picture.LoadFromFile('
images/wand-breit.PNG')
//Wand oben und unten laden
end;
end;
end;
for x:=6
to 9
do
begin;
y:=9;
feld[x,y].
Name := '
Snake-Körper';
feld[x,y].Bild := Timage.create(Form2);
feld[x,y].Bild.parent := Form2;
feld[x,y].Bild.top := x*50;
feld[x,y].Bild.left := y*50;
feld[x,y].Bild.Picture.LoadFromFile('
images/körper.PNG');
// Snake laden
snake[i].x1:=x;
snake[i].y1:=y;
i:=i+1;
end;
x:= random(10)+2;
y:= random(13)+2;
//Apfel erscheint zufällig
begin
feld[x,y].
Name := '
Apfel';
feld[x,y].Bild := Timage.create(Form2);
feld[x,y].Bild.parent := Form2;
feld[x,y].Bild.top := x*50;
feld[x,y].Bild.left := y*50;
feld[x,y].Bild.Picture.LoadFromFile('
images/apfel.PNG');
//Apfel laden
end;
x:=0;
y:=0;
dup:= '
up';
dright:= '
right';
dleft:= '
left';
ddown:='
down';
längesnake:=4;
end;
//______________________Spielfeld kreieren_________________________________________________________________________________________
procedure TForm2.FormCreate(Sender: TObject);
begin
Form2.DoubleBuffered:=True;
init;
//Spielfeld-Aufbau
end;
//_____________________________________________________________________________________________________
procedure TForm2.FormKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
begin
case chr(key)
of
chr(38),'
w', '
W':
if olddirection <> ddown
then
begin
direction:=dup;
Timer1.Enabled:=true;
Timer2.Enabled:=true;
//Start der Bewegung
olddirection:=direction;
end;
chr(40),'
s', '
S':
if olddirection <> dup
then
begin
direction:=ddown;
Timer3.Enabled:=true;
Timer4.Enabled:=true;
olddirection:=direction;
end;
chr(37),'
a', '
A':
if olddirection <> dright
then direction := dleft;
chr(39),'
d', '
D':
if olddirection <> dleft
then
begin
direction := dright;
Timer5.Enabled:=true;
olddirection:=direction;
end;
end;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
Button1.Visible:=false;
x:=5;
y:=9;
x2:=9;
y2:=9;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
feld[x,y].
Name := '
Snake-Körper';
feld[x,y].Bild := Timage.create(Form2);
feld[x,y].Bild.parent := Form2;
feld[x,y].Bild.top := x*50;
feld[x,y].Bild.left := y*50;
feld[x,y].Bild.Picture.LoadFromFile('
images/körper.PNG');
x:=x-1;
//nach oben bewegen
If ((x <1)
or (y <1)
or (x>13)
or (y>17)
or (x2 <1)
or (y2 <1)
or (x2>13)
or (y2>17)
or (snake[1].x1 <1)
or (snake[1].y1 <1)
or (snake[1].x1>13)
or (snake[1].y1>17))
then
begin
Timer1.Enabled:=false;
Timer2.Enabled:=false;
showmessage('
Sie haben verloren! ):');
//Wandcrash-Abfrage
end;
end;
procedure TForm2.Timer2Timer (Sender:TObject);
begin
feld[x2,y2].
Name := '
Gras';
feld[x2,y2].Bild := Timage.create(Form2);
feld[x2,y2].Bild.parent := Form2;
feld[x2,y2].Bild.top := x2*50;
feld[x2,y2].Bild.left := y2*50;
feld[x2,y2].Bild.Picture.LoadFromFile('
images/gras.PNG');
//läd Gras
//auf das
x2:=x2-1;
//letzte Teil
//der Snake
end;
procedure TForm2.Timer3Timer(Sender: TObject);
begin
Timer2.Enabled:=false;
Timer1.Enabled:=false;
Timer5.Enabled:=false;
Timer2.Enabled:=false;
feld[x,y].
Name := '
Snake-Körper';
feld[x,y].Bild := Timage.create(Form2);
feld[x,y].Bild.parent := Form2;
feld[x,y].Bild.top := x*50;
feld[x,y].Bild.left := y*50;
feld[x,y].Bild.Picture.LoadFromFile('
images/körper.PNG');
x:=x+1;
//nach unten bewegen
If ((x <1)
or (y <1)
or (x>13)
or (y>17)
or (x2 <1)
or (y2 <1)
or (x2>13)
or (y2>17)
or (snake[1].x1 <1)
or (snake[1].y1 <1)
or (snake[1].x1>13)
or (snake[1].y1>17))
then
begin
Timer3.Enabled:=false;
Timer4.Enabled:=false;
showmessage('
Sie haben verloren! ):');
//Wandcrash-Abfrage
end;
end;
procedure TForm2.Timer4Timer (Sender:TObject);
begin
feld[x2,y2].
Name := '
Gras';
feld[x2,y2].Bild := Timage.create(Form2);
feld[x2,y2].Bild.parent := Form2;
feld[x2,y2].Bild.top := x2*50;
feld[x2,y2].Bild.left := y2*50;
feld[x2,y2].Bild.Picture.LoadFromFile('
images/gras.PNG');
//läd Gras
//auf das
x2:=x2+1;
//letzte Teil
//der Snake
end;
procedure TForm2.Timer5Timer(Sender: TObject);
begin
If direction=Dright
then
begin
Timer1.Enabled:=false;
Timer2.Enabled:=false;
Timer3.Enabled:=false;
Timer4.Enabled:=false;
feld[x,y].
Name := '
Snake-Körper';
feld[x,y].Bild := Timage.create(Form2);
feld[x,y].Bild.parent := Form2;
feld[x,y].Bild.top := x*50;
feld[x,y].Bild.left := y*50;
feld[x,y].Bild.Picture.LoadFromFile('
images/körper.PNG');
y:=y+1;
//nach rechts bewegen
end;
If ((x <1)
or (y <1)
or (x>13)
or (y>17)
or (x2 <1)
or (y2 <1)
or (x2>13)
or (y2>17)
or (snake[1].x1 <1)
or (snake[1].y1 <1)
or (snake[1].x1>13)
or (snake[1].y1>17))
then
begin
Timer5.Enabled:=false;
Timer2.Enabled:=false;
showmessage('
Sie haben verloren! ):');
//Wandcrash-Abfrage
end;
end;
procedure TForm2.Timer6Timer (Sender:TObject);
begin
feld[x2,y2].
Name := '
Gras';
feld[x2,y2].Bild := Timage.create(Form2);
feld[x2,y2].Bild.parent := Form2;
feld[x2,y2].Bild.top := x2*50;
feld[x2,y2].Bild.left := y2*50;
feld[x2,y2].Bild.Picture.LoadFromFile('
images/gras.PNG');
//läd Gras
//auf das
x2:=x2+1;
//letzte Teil
//der Snake
end;
procedure TForm2.Timer7Timer(Sender: TObject);
begin
Timer1.Enabled:=false;
Timer2.Enabled:=false;
Timer3.Enabled:=false;
Timer4.Enabled:=false;
Timer5.Enabled:=false;
Timer6.Enabled:=false;
feld[x,y].
Name := '
Snake-Körper';
feld[x,y].Bild := Timage.create(Form2);
feld[x,y].Bild.parent := Form2;
feld[x,y].Bild.top := x*50;
feld[x,y].Bild.left := y*50;
feld[x,y].Bild.Picture.LoadFromFile('
images/körper.PNG');
y:=y-1;
//nach links bewegen
If ((x <1)
or (y <1)
or (x>13)
or (y>17)
or (x2 <1)
or (y2 <1)
or (x2>13)
or (y2>17)
or (snake[1].x1 <1)
or (snake[1].y1 <1)
or (snake[1].x1>13)
or (snake[1].y1>17))
then
begin
Timer5.Enabled:=false;
Timer2.Enabled:=false;
showmessage('
Sie haben verloren! ):');
//Wandcrash-Abfrage
end;
end;
procedure TForm2.Timer8Timer (Sender:TObject);
begin
feld[x2,y2].
Name := '
Gras';
feld[x2,y2].Bild := Timage.create(Form2);
feld[x2,y2].Bild.parent := Form2;
feld[x2,y2].Bild.top := x2*50;
feld[x2,y2].Bild.left := y2*50;
feld[x2,y2].Bild.Picture.LoadFromFile('
images/gras.PNG');
//läd Gras
//auf das
x2:=x2+1;
//letzte Teil
//der Snake
end;
end.