Programmierprojekt:
"Das unsichtbare Labyrinth"
Ziel des diesjährigen (2007/08) Neigungskurses war es, ein
Denkspiel zu entwickeln. Es sollte die Grafikbefehle der
Programmiersprache ausnutzen und ein einfaches Spielprinzip zugrunde
legen.
Nach der Einarbeitung in die Befehlsgruppe rund um
die Darstellung von Grafiken entstand eine kurze Serie kleiner
Übungsprogramme zum Umgang mit Grafikelementen:
[
01_punkt.prf ]
Das Erzeugen und Verschieben von
virtuellen "Spielfiguren".
[
02_kontur.prf ] [ kontur.bmp
]
Die "Spielfigur" folgt einer
vorgegebenen Kontur.
[ 03_laby.prf
] [ laby.bmp ]
Unter Ausnutzung von Programmstrukturen wird die
"Spielfigur" durch ein einfaches Labyrinth geführt.
Soweit die Grundlagen. Nun ergab sich die Problematik, die
"Spielfigur"
von außen zu steuern. Wir entschlossen uns dazu, die Steuerung über ein
Button-Menü umzusetzen.
[
spiel_01.prf ]
Einfache Buttonsteuerung einer
"Spielfigur" auf einem Spielfeld. Die Analyse des Programmablaufs und
die daraus resultierende Erweiterung des Programms werden im
Arbeitsblatt "Programmanalyse.doc"
bearbeitet.
[
spiel_02_Randbegrenzung.prf ]
Erste erweiterte Version: Die "Spielfigur" kann das Spielfeld nicht mehr
verlassen, da die Randbegrenzung abgefragt wird.
[ spiel_03_hindernisse.prf ]
Analog zur Randbegrenzung werden nun Hindernisse platziert und
abgefragt. Die "Spielfigur" kann also auch diese Felder nicht
betreten oder überqueren. Das Hauptproblem hierbei war, dass die
"Spielfigur" von verschiedenen Seiten auf das Objekt bzw. Hindernis stoßen kann - deshalb
wurde die Abfrageroutine komplett erneuert.
[ spiel_04_objekte.prf ]
In der vierten Version wurden grüne Objekte ergänzt, die es gilt
einzusammeln. Dazu wurde die Abfrageroutine so verändert, dass in
Hindernisse und Objekte unterschieden wird.
[ spiel_05_objekte_leben.prf ]
Die nächste Erweiterung war die Implementierung des Lebenszählers.
Bei jedem Zusammenstoss mit einem Hindernis bzw. der Randbegrenzung
wird ein Leben abgezogen.
[
spiel_06_objekte_leben_ziel.prf ]
Nun erkennt das Programm, wenn alle Objekte eingesammelt wurden und
beendet das Spiel dann automatisch. Das Spiel ist ebenfalls zu Ende,
wenn alle Leben aufgebraucht sind.
[
spiel_07_objekte_II_leben_ziel.prf ]
In dieser Version wird das eigentliche Spielprinzip integriert. Die
hinzugefügten gelben Hindernisse sind zwar selbst nur ein Feld groß,
aber die "Spielfigur" darf sich dem Hindernis nur bis auf ein Feld
Abstand nähern. An dieser Stelle entstand der Spielnamen "Das
unsichtbare Labyrinth".
Das Spiel ist soweit fertig.
Der erste Level sieht nun so aus:
[ Level_01.doc ]
[ spiel_08_level_I_II.prf ]
Die letzte große Herausforderung war die Implementierung der
einzelnen Levels. Dazu wurde eine Levelstart-Routine (Prozedur) mit
hinzugenommen, die das Spielfeld neu aufbaut und die "Spielfigur" an
ihren Ausgangsplatz zurücksetzt. Hinzugekommen ist weiterhin die
Spielanleitung im Startbildschirm, die durch das Arbeitsblatt
Uebung_zu_DrawText.doc
vorbereitet wurde.
[ Level_02.doc ]
[ spiel_09_level_I_III.prf ]
Der Levelaufbau wird komplizierter. Durch Hinzunahme immer mehr
gelber Hindernisse wird das Finden des geeigneten Lösungsweges immer
schwieriger.
[ Level_03.doc ]
[ spiel_10_level_I_IV.prf ]
Der vorletzte Level.
[ Level_04.doc ]
[ spiel_11_level_I_V.prf ]
Der letzte Level enthält nun das Logo der 16. Mittelschule. Damit
ist das Spiel prinzipiell fertig und kann nun durchgespielt werden.
[ Level_05.doc ]
[ spiel_12_level_I_V_Ani.prf ]
Der nächste Schritt war die Erstellung einer kleinen Animation der
"sterbenden Spielfigur". Das ist sehr wichtig geworden, damit man
die Stellung der "Spielfigur" erkennen kann, wenn sie sich auf dem
Rückweg befindet.
[
spiel_13_Geschwindigkeit.prf ]
Nach dem Compilieren des Programms war festzustellen, dass die
Buttenabfrage auf schnellen Rechnern zu ungenau arbeitete. Deshalb
wurde eine Geschwindigkeitsanpassung bei Programmstart
implementiert, welche die Warte-Prozedur beeinflusst.
[ spiel_14_Menue.prf ]
Zum Abschluss des Projekts wurde eine Menüleiste kreiert, über die
man Informationen über das Programm sowie die Autoren abrufen kann,
und in welche dann auch die Geschwindigkeitsanpassung integriert wurde.
Somit kann man nun auch im laufenden Spiel die Geschwindigkeit an
den Prozessor anpassen.
Links & Downloads:
Ergebnis downloaden:
[ Das unsichtbare Labyrinth ]
Download von Profan
(z.Z. Version 6.6 FreeWare):
[ Profan ]
Webseite der 16. MS Leipzig:
[ www.ms16.de ]
... oder direkt zur Profanseite der Schule:
[
Kursmaterial ]
Fragen können an Jens
Tiburski gerichtet werden.