|
Registriert seit: 19. Okt 2012 15 Beiträge |
#1
hey ich hätte mal eine frage. Ich programmiere im Moment snake. Habe die Kollisionsabfrage, einen Apfel der zufällig spawnt und die Schlange kann auch laufen aber lenken geht nicht
![]()
Delphi-Quellcode:
Was mache ich falsch?
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. |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |