HiDiHo,
Wir sollen für die Schule bis Montag nen Spieleklassiker Programieren, hab mich für Snake entschieden was auch erstmal ganz gut Funktioniert...
Wäre da nicht folgender fehler: Nach einiger Zeit, wenn die snake schon etwas länger ist, erscheint irgendwo ein stück schlange (ein kästchen groß). Wenn snake dann isst bekomme ich vom debugger eine zugriffsverletzung
in der Markierten zeilen.
Ich hab einfach nen recordarray mit x u. y werten genommen der dann immer um eins nach vorne gerollt wird sozusagen und wenn snake ein rotes isst vorher um eins verlängert wird. Zeichnen tu ich mittels Canvas(in eine Paintbox) mit folgender prozedur:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure malen(Sender: TObject); var i:integer; begin with form1.PaintBox1.Canvas do begin Brush.Color:= clwhite; pen.Color:=clwhite; Rectangle(0,0,form1.PaintBox1.Width,form1.PaintBox1.Height);
Brush.Color:= clred; pen.Color:= clred; Rectangle(eat.x*15,eat.y*15,eat.x*15+15,eat.y*15+15);
Brush.Color:= clgreen; pen.Color:= clgreen; for i:=0 to lange do begin Rectangle(snake[i].x*15,snake[i].y*15,snake[i].x*15+15,snake[i].y*15+15); end; end; end; |
Woran kann das liegen? ist der array irgendwie zu lang? Mein timer steht auf 100 das is doch nicht zu schnell oder?
Falls jemand ne idee hat her damit, kann auch nen screenshot machen nach bedarf.
Thx im vorraus
lg cracky