Online-Skater
Erfahrenes Mitglied
Hi leutz
Das Spiel habe ich fertig aufgrund einer Schulaufgabe.
hier der link Gol
wenn ihr es runtergeladen habt seht eure CPU-Auslastung an
Das Problem ist die Abfrage der Nachbarn da alles z.B. 100 ms 4 Schleifen durchlaufen werden.
Ich bin noch anfänger und habe von einer zelle alle 8 Zellen nach leben abgefragt und dies ist Zeitaufwändig vorallem vershclingt es Rechenleistung...
Hat einer einen Vorschlag die Nachbarn günstiger zu zählen ?
Ich hab gelesen das man nur die drei rechten nachbarn zählen muss da der rest bekannt sei usw. aber da sehe ich nicht durch.
Vielleicht weis ja einer von euch wie man dies beheben könnte.
Das Spiel habe ich fertig aufgrund einer Schulaufgabe.
hier der link Gol
wenn ihr es runtergeladen habt seht eure CPU-Auslastung an

Das Problem ist die Abfrage der Nachbarn da alles z.B. 100 ms 4 Schleifen durchlaufen werden.
Ich bin noch anfänger und habe von einer zelle alle 8 Zellen nach leben abgefragt und dies ist Zeitaufwändig vorallem vershclingt es Rechenleistung...
Hat einer einen Vorschlag die Nachbarn günstiger zu zählen ?
Ich hab gelesen das man nur die drei rechten nachbarn zählen muss da der rest bekannt sei usw. aber da sehe ich nicht durch.
Vielleicht weis ja einer von euch wie man dies beheben könnte.
Code:
procedure Nachbarn(x,y:integer);
begin
// oben links
if (x-1 >= 0) and (y-1 > 0) then
if life[x-1,y-1] = true then nachb := nachb + 1;
// oben
if (y-1 >= 0) then
if life[x,y-1] = true then nachb := nachb + 1;
// oben rechts
if (x+1 < 74) and (y-1 >= 0) then
if life[x+1,y-1] = true then nachb := nachb + 1;
// rechts
if (x+1 < 74) then
if life[x+1,y] = true then nachb := nachb + 1;
// rechts unten
if (x+1 < 74) and (y+1 < 74) then
if life[x+1,y+1] = true then nachb := nachb + 1;
// unten
if (y+1 < 74) then
if life[x,y+1] = true then nachb := nachb + 1;
// unten links
if (x-1 >= 0) and (y+1 < 74) then
if life[x-1,y+1] = true then nachb := nachb + 1;
// links
if (x-1 >= 0) then
if life[x-1,y] = true then nachb := nachb + 1;
anzahl[x,y] := nachb;
Code:
// Nachbarzählung
for i:= 0 to 74 do
for j:= 0 to 74 do
begin
Nachbarn(i,j);
nachb := 0;
end;