Spieleengines

Am liebsten programmiere ich mit Schülern Spiele. Das Gefühl, wenn das realisierte Programm läuft ist unbeschreiblich. Man möchte eigentlich gar nicht mehr aufhören mit spielen. Leider ist es gerade in der zehnten Klasse nicht so ganz einfach „Spiele“ zu programmieren, da doch viele keine Erfahrung haben. Ich mache dann oftmals kleine Programme wie „Was soll ich machen?“ bei dem per Zufall aus einem Array eine Antwort ausgelesen wird. Oder ich wandle es ab und es sollen zwei Sorten Eis ausgewählt. Auch das Nim-Spiel lässt sich mit Arrays umsetzen.

Soll es komplexer werden, so greifen einige Kollegen auf das Projekt Krümel&Monster zurück. Hierbei wird das Spiel PacMan von Beginn an umgesetzt. Mir persönlich war das alles zu eng und zu fest vorgegeben; die Schüler müssen sich ziemlich eng an die Vorgabe halten. Daher habe ich das auch nie im Unterricht benutzt. Das mir mein Sohn jetzt diesen negativen Aspekt bestätigt, finde ich schade für ihn, denn so lernt er nicht das spaßmachende Kreative beim Programmieren kennen.

Das hat sich wohl auch ein Schüler gedacht und das Projekt engine-alpha ins Leben gerufen. engine-alpha ermöglicht es relativ einfach 2D-Spiele zu programmieren, also auch PacMan. Aber es lassen sich auch viele andere Spiele damit programmieren: Snake, Space-Invaders, Moorhuhn, etc. Der Lehrer des Schülers, Michael Ganshorn, hat dann noch das entsprechende Unterrichtskonzept entwickelt. Ich selbst habe die engine-alpha vor einigen Jahren (2012?) auf einer Fortbildung bei der TU München kennengelernt. Damals fand ich die engine-alpha zu langsam und zu unausgegoren von der Benutzung für Anfänger. Man musste sich zu sehr auf das „Wie drücke ich das aus?“ als auf das „Wie löse ich das Problem?“ konzentrieren. Aber ich denke, dass hat sich jetzt geändert. Ich sollte mal wieder versuchen damit zu programmieren.

Aufgabe

Aber eigentlich wollte ich darüber gar nicht schreiben. Ich wollte ja die nächste Programmieraufgabe vorstellen. Hintergrund für diese Aufgabe ist ein Flohmarktkauf meines Sohnes:

IMG_5357

Wir haben jetzt erstmal nur die „gobang“-Variante ausprobiert, da wir beide GO nicht kennen. Bei „gobang“ geht es darum, 5 gleiche Steine in eine Reihe (senkrecht, waagerecht, diagonal) zu bekommen. Es werden keine Steine umgedreht oder weggenommen. Es hat also eher was von einem erweiterten „4 gewinnt“.

Bei der Suche nach eine Variante, wie man das hübsch umsetzen kann, bin ich auf GameGrid gestoßen. Ein aus meiner Sicht wirklich großartiges Tool, das zum Programmieren und Ausprobieren geradezu einlädt. Und zwar nicht nur, weil die Benutzung relativ einfach ist, sondern auch weil es einen Haufen an Beispielen gibt (Reversi, Snake, 4 gewinnt,..)  und das auch immer in einer Netzwerk-Varianten!!!!. Damit kann ich quasi nahtlos an die Oberstufe anschließen. Oder ich kann das gewohnte netzwerken, was die Schüler von ihren Apps kennen, auch schon mal in der 10. Klasse umsetzen.

Aufgabe

Implementiere die „gobang“ mit einer gameengine deiner Wahl.

Selbstverständlich kann man das Spiel auch nur mit einem zweidimensionalen char-Array umsetzen und ohne jegliche Oberfläche umsetzen.

Meine Lösung biete ich auch mal ausnahmsweise an: GO_Brett

Die Prüfung auf „5 in einer Reihe“ kann man durchaus eleganter machen. Aber das wäre etwas für die Oberstufe – Stichwort „Rekursion“. Und anschließend kann man sich ja mal Gedanke über Laufzeitanalysen machen.