Hallo,
ich schaffe es nicht, die Animation in der letzten Aufgabe die Animation, die man eigentlich sehen sollte, wenn man die gameoflife.py direkt ausführt ans Laufen zu bekommen. Es sieht so aus, als ob zwei Frames gezeichnet werden. Danach verändert sich nichts mehr. Auf dem Kommandozeile wird auch nichts ausgegeben.
Ich habe das mit Python 3.9 bis 3.11 verteilt über zwei Linuxe inkl. dem CIP-Pool und Windows 11 getestet. Die öffentlichen Tests laufen ohne Fehler durch und ich sehe gerade nicht an meinem Code, was das verursachen könnte. Haben das Problem noch mehr von euch und falls ja, konntet ihr es lösen? Vielleicht habt ihr dann ja einen Tipp, in welchem Bereich sich der Fehler verstecken könnte.
Hi,
der Fehler ist bekannt; typischerweise wird er dadurch ausgelöst, dass ihr in next_step() den neuen Zustand in die Kopie des Gitters schreibt, und nicht in das Original-Gitter. Für die Tests macht das keinen Unterschied, da diese nur den Rückgabewert von next_step() betrachten. Die Animation allerdings hält intern eine eigene, feste Referenz auf das Originalgitter. Das Bild der Animation wird zwar anhand des Rückgabewertes von next_step() aktualisiert, aber im nächsten Schritt wird wieder das Original-Gitter an next_step() übergeben, sodass der neue Zustand verloren geht, wenn er nur in der temporären Kopie steht (siehe Code in gameoflife()).