Das unsichtbare Labyrinth - Projekt von J. Tiburski

 

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.


Geschwindigkeitsanpassung

[ 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.

 

Das fertige Programm!

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.