Programmieraufgabe 115: Game of life

Auf der Suche nach einer Programmierübung zu 2D-Arrays ist mir wieder das “Game of life” von Stanisław Marcin Ulam eingefallen. Ulam dürfte dem ein oder anderen vielleicht bekannt sein über dessen Ulam-Funktion (auch Collatz-Problem), die ich etliche Male im Unterricht besprochen habe. Überhaupt ist meiner Meinung nach Ulam eine spannende Persönlichkeit, denn neben vielen seiner mathematischen Erkenntnisse, die problemlos im Unterricht behandelt werden können (Monte-Carlo-Methode) war er leider auch maßgeblich an der Entwicklung der Atombombe beteiligt, die dann allerdings wiederum zur Idee des nuklearen Pulsantriebes führte, die in etlichen Sci-Fi-Geschichten aufgegriffen wird.

Warum also nun Game of life? Ganz einfach: Mein Problem ist sehr häufig, dass ein zweidimensionales Array wie beispielsweise int[][] zahlen = new int[6][4] als eine rechteckige Tabelle der Form 6 Spalten und 4 Reihen verstanden wird. Leider stimmt das aber nicht. Zumindest nicht in Java und das ist immer noch die Sprache, die ich im Unterricht benutze.

Die Zeile int[][] zahlen = new int[6][4] ; erzeugt viel mehr eine Tabelle mit 6 Reihen und 4 Spalten. Und da häufig mit geschachtelten for-Schleifen gearbeitet wird und  Anweisungen der Art zahlen[x][y] = 7; auftreten, gibt es sehr häufig ArrayOutOfBoundsExceptions. Bei quadratischen 2D-Arrays gibt es das Problem nicht, aber bei rechteckigen. Und um das Arbeiten mit 2D-Arrays zu üben, ist die Aufgabe zu Game of life auf einem nicht-quadratischen Feld.

Aufgabe

Erstelle ein Programm, das bildschirmfüllend das Game of life von Stanislaw Ulam umsetzt.

Lösung: Bei der Lösung ist noch zusätzlich eine Funktion enthalten, um das Programm anzuhalten und zu starten (Tastendruck) und mit der Maus aktive Zellen zu ergänzen (nur bei gestoppter Anzeige). GameOfLife

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Durch die weitere Nutzung der Seite (Scrollen, Navigieren) stimmen Sie der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen