Hallo,
ich habe eine Frage zur Umsetzung einer Räuber-Beute-Simulation (Hasen und Füchse), was ja dem Game of Life sehr ähnlich ist. Die Umsetzung (2D-Array, ...) ist mir ziemlich klar; ich habe schon erfolgreich das Game of Life implementiert.
Nun komme ich aber ins Grübeln bei den Regeln, z.B. wenn ein Fuchs die Regel hat: "alle umliegenden Hasen zu verzehren" und "falls er keine Nahrung gefunden hat bewegt er sich auf ein Nachbarfeld". Wenn ich nun durch mein 2D-Array laufe, kommen ja manche Füchse voher dran als andere (bedingt durch die Struktur der zwei verschachtelten Schleifen). Dann könnte ich ja schon Änderungen vornehmen, die zu Seiteneffekten führen wenn ich zu den späteren Füchsen (z.B. nächste Zeile) komme. Bei meiner Implementierung des Game of Life habe ich einfach zu Beginn eines solchen Aktualisierungschrittes eine zweite leere Matrix angelegt und darein die Änderungen (die aufgrund der aktuellen Matrix sich ergaben) geschrieben und zum Schluss einfach die bisherige durch die neue ersetzt. Aber das klappt ja hier auch nicht gut, oder?
Ich habe zwar versucht Source-Code existierender Implementationen zu verstehen jedoch nicht viel hiervon gesehen.
Habt Ihr eine Idee, wie ich diese Problematik lösen kann?
Viele Grüße,
mythbu
ich habe eine Frage zur Umsetzung einer Räuber-Beute-Simulation (Hasen und Füchse), was ja dem Game of Life sehr ähnlich ist. Die Umsetzung (2D-Array, ...) ist mir ziemlich klar; ich habe schon erfolgreich das Game of Life implementiert.
Nun komme ich aber ins Grübeln bei den Regeln, z.B. wenn ein Fuchs die Regel hat: "alle umliegenden Hasen zu verzehren" und "falls er keine Nahrung gefunden hat bewegt er sich auf ein Nachbarfeld". Wenn ich nun durch mein 2D-Array laufe, kommen ja manche Füchse voher dran als andere (bedingt durch die Struktur der zwei verschachtelten Schleifen). Dann könnte ich ja schon Änderungen vornehmen, die zu Seiteneffekten führen wenn ich zu den späteren Füchsen (z.B. nächste Zeile) komme. Bei meiner Implementierung des Game of Life habe ich einfach zu Beginn eines solchen Aktualisierungschrittes eine zweite leere Matrix angelegt und darein die Änderungen (die aufgrund der aktuellen Matrix sich ergaben) geschrieben und zum Schluss einfach die bisherige durch die neue ersetzt. Aber das klappt ja hier auch nicht gut, oder?
Ich habe zwar versucht Source-Code existierender Implementationen zu verstehen jedoch nicht viel hiervon gesehen.
Habt Ihr eine Idee, wie ich diese Problematik lösen kann?
Viele Grüße,
mythbu