Tetris in Miranda
Jeder Informatiker hat schon einmal ein Tetris programmiert. Es gibt Tetris in Assembler, in 2,3 und auch in 4 Dimensionen.
Jetzt gibt es Tetris in Miranda.
Miranda ist eine streng (und ich meine streng) funktionale Programmiersprache. Es gibt einige Probleme, für die sich solche Sprachen anbieten, und andere, bei denen es absurd anmutet, sich dieser Sprache zu bedienen.
Zu letzteren gehören Programme, die Interaktion erfordern, zum Beispiel. Oder Spiele generell. Oder Tetris.
Schwachsinn, in Miranda Tetris zu schreiben. Unmöglich. Nun, es läuft.
Wie funktioniert das Programm?
Tetris besteht aus mehreren Modulen.
tetris.m
Hier wird das Spiel gestartet und beendet. Der Eingabestream wird als unendlicher Stream an das Programm übergeben. Hier findet auch das einzige nicht-funktionale statt, da hier die Zeit (für den Zufallsgenerator) eingelesen wird.
zustand.m
Hier steckt die Spiellogik: Die Aktionen des Spielers werden interpretiert. Auch das regelmäßige Absinken der Steine wird hier verwaltet. Der Zustand eines Spiels umfasst sowohl die offensichtlichen Daten (wie Steinpositionen) als auch Verwaltungsdaten (wie Zeit seit dem letztem Absinken).
eingabe.m
In diesem kleinen Modul werden die Funktionen gekapselt, die direkt die I/O machen.
stein.m
Steine können ganz verschiedene Formen haben. All dies steht hier. Jeder Stein ist eine Zellstruktur aus zellen.m
. Das Drehen ist sehr elegant.
zellen.m
Eine Zellstruktur ist ein rechteckiges Gebilde aus gesetzten und nicht gesetzten Zellen. Die schon gefallenen Steine sind ebenso wie der aktuelle Stein eine Zellstrukturen. Hier werden viele etwas haarige Funktionen definiert, z.B. der Test, ob zwei Zellstrukturen (Bildschirm und Stein) sich überschneiden.
parameter.m
Hier können die Spiel-Optionen eingestellt werden.
Wie spiele ich Tetris?
Tetris läuft nur mit der Sprache Miranda. Das Programm wurde unter Unix erstellt, wird Miranda in einer anderen Umgebung benutzt, können Basteleien nötig werden. Manche Terminals unterstützen das Löschen des Bildschirms nicht.
- Zuerst müssen alle zum Programm gehörigen Dateien heruntergeladen werden.
startTetris
muß ausführbar sein.
- Tetris läuft auch ohne das Programm
autoReturn.c
. Allerdings wird dann jede Eingabe auf den Bildschirm ausgegeben, was den Bildschirmaufbau zerstört. Weiter schickt autoReturn
in regelmäßigen Abständen ein Return, als Taktgeber. Das Programm autoReturn
wird mit C compiliert, z.B. durch
acc -o autoReturn autoReturn.c
- Der Start des Programmes erfolgt mit
(echo tetris; autoReturn 2) | mira tetris.m
oder einfach durch Aufruf der Datei startTetris
, in der dieses steht.
Alternativ kann man auch einfach Miranda mit der Datei tetris.m
starten und die Funktion tetris
aufrufen.
- Sämtliche möglichen Parameter, u.a. die Tasten zum Spielen werden durch die Datei
parameter.m
bestimmt und können dort eingesehen und geändert werden.