Zitat von
TaIPaN:
Delphi-Quellcode:
for i:=1 to laenge do
begin
x[i+1]:=x[i];
y[i+1]:=y[i];
Spielfeld.Bild.Canvas.Rectangle(x[i], y[i], x[i]+2*r, y[i]+2*r);
end;
In dieser Schleife aus TSnake.Wachsen liegt wohl der Fehler: x[2] wird auf x[1] gesetzt. Beim nächsten Durchlauf wird x[3] dann auf x[2] gesetzt, was ja beim vorherigen Durchlauf auf x[1] gesetzt wurde. Am Ende ist also x[1] = x[2] = x[3] = x[Laenge]. Das gleiche gilt natürlich für's y.
Versuchs mal mit einer For-downto-Schleife:
Delphi-Quellcode:
for i := Laenge downto 2 do
begin
x[i] := x[i - 1];
y[i] := y[i - 1];
Spielfeld.Bild.Canvas.Rectangle(x[i], y[i], x[i]+2*r, y[i]+2*r);
end;