Lehrzeit

Schule & Informatik

Programmieraufgabe 85

Spieleengines

Am liebsten programmiere ich mit Schülern Spiele, da das Gefühl, wenn das realisierte Programm dann läuft ist unbeschreiblich gut und 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.

Rätsel des Alltags

Manchmal erlebt man ja Dinge im Leben, da fragt sich „Warum?“:

  1. Warum rollen die Dinge immer ganz weit unter den Schrank?
    Und Murphys Law erklärt es nicht, es beschreibt nur, warum es so ist.
  2. Warum fährt man in GB auf der linken Straßenseite?
    Gut, eine Erklärung ist, dass man auch in der Regel von Links auf ein Pferd steigt oder weil irgendwelche Sachen/Waffen Links oder Rechts hingen etc. ABER in Frankreich ist man auch viel geritten und die fahren Rechts.
    Und wo wir gerade bei Links und Rechts sind… Warum heißt es „Recht sprechen“ und „Recht haben“ und schreibt man letzteres wirklich auseinander oder zusammen oder ….
  3. Wer hat sich eigentlich diese ganzen Unterschiedlichen Steckdosen ausgedacht, die alle nicht miteinander kompatibel sind?

Und konkret in meinem heutigen Fall:

Wer  hat jemals entschieden, dass Kakao auf einen Cappuccino kommt?

IMG_5344

Ich persönlich hasse das, weil ich ja Kaffee (okay, ist nicht wirklich Kaffee, aber das ist ein anderes Thema) und keinen Kakao haben möchte.  Die Bäckerei gegenüber meiner Schule hat das nach gefühlten 40 gekauften Cappuccinos (wahrscheinlich heißt es Cappuccini) zum Glück auch begriffen.

Ich glaube ja, dass die Verkäufer Kakao darauf machen, weil sie keine Ahnung haben, wie man vernünftig Espresso und Milch mischt so wie hier:

Wet_Cappuccino_with_heart_latte_art(Quelle: wikimedia , public domain)

Aber dann sollen sie den Kakao doch bitte einfach weglassen. Dann sieht es zwar nicht hübsch aus, aber da ich auch noch Zucker reinmache, rühre ich um und das Gemälde wäre in jedem Fall weg.

Programmieraufgabe 84

Nachdem die letzten Aufgaben zum Thema Java waren, kommt jetzt mal wieder was zu Datenbanken.

Aufgabe

Erstelle eine Datenbank zur zufälligen Erzeugung von Essensplänen für eine Familie.

Details:

  1. Es gibt nur Mittag- und Abendessen
  2. Jede Essensvorschlag kann Mittags oder Abends auftauchen – auch doppelt (das ist einfacher, kann aber auch noch erzwungen werden)
  3. Nicht jedes Essen kann zu jedem beliebigen Zeitpunkt auftauchen.
    Wenn jemand mit Laktosintoleranz mal wegen des Nachmittagsunterrichts fehlt, kann es für den Rest Milchreis geben.
  4. Es muss die ganze Woche (Mo-So) abgedeckt werden.
  5. Die Datenbank muss mindestens die 2. Normalform erfüllen.

Die Angabe bzgl. des Schemas sind absichtlich unscharf definiert, um so eine größere Bandbreite an Lösungen zu erhalten.

Um zufällig einen Eintrag auszuwählen, kann man folgendes Konstrukt verwenden:

   SELECT datensatz FROM tabelle ORDER BY RAND() LIMIT 1

Das Projekt lasse ich in OpenOffice erstellen und es muss am Ende ein Bericht mit einem fertigen Essensplan erzeugt werden können. Weiter erwarte ich von meinen Schülern, ein schönes und sinnvoll gestaltetes Formular zum Eingeben weiteren Essenvorschläge.

« Ältere Beiträge

© 2016 Lehrzeit

Theme von Anders NorénHoch ↑