Das hier ist der Code...
Code:
procedure TForm1.SpawnFood();
var x,y, i:Integer; found: Boolean;
begin
found:= false;
while(not found) do begin //solange kein geeigneter Ort gefunden wurde wiederholen
found:= true;
x:= Random(breite);
y:= Random(hoehe);
if(x= Kopf.X) or (y = Kopf.Y) then found := false;;
for i:= 0 to BodyLength-1 do begin
if(x= Teile[i].X) or (y = Teile[i].Y) then found := false; //prüft, ob der Platz frei ist
end;
end;
Essen := TFood.Create(x,y); //erstell
end;
Jetzt wo ihr es sagt, sehe ich meinen Fehler, ganz dumm >.<
Ich habe jeweils "or" geschrieben. Wenn also eine Reihe vollständig von einer Schlange besetzt ist, gehts in die Endlosschleife
Habe ich jetzt gefixt!
Vielen Dank!