home *** CD-ROM | disk | FTP | other *** search
- ╒╤═════════════════════════════════════════════════════╤╕
- ││ ││
- ││ M E G A - B O L O ││
- ││ =================== ││
- ││ ││
- ││ ││
- ││ (C) Copyright 1991 Peter Messmer & toolbox ││
- ││ ││
- ││ Special thanks to ANKE for her coloration ││
- ││ ││
- ╘╧═════════════════════════════════════════════════════╧╛
-
-
-
- " Make it as simple as possible but not simpler "
- A.Einstein
-
- Das Spiel
- ---------
-
- Falls Du über einen IBM-kompatiblen Computer mit EGA, Hercules oder AT&T-
- Grafikkarte verfügst, dann kannst Du Dich direkt ins Vergnügen stürzen.
- Falls nicht, dann mußt Du Dir erst einmal den Source-Code anschauen und
- die Umbauten vornehmen, die Dir nötig erscheinen, um das Ganze auf CGA lauf-
- fähig zu machen.
-
- Gestartet wird das Spiel von der Betriebssystemebene aus mit
-
- BOLO
-
- Danach läuft alles automatisch ab. Sollten die Sound-Effekte schon von Anfang
- an ausgeschaltet werden, dann kann beim Startvorgang irgendeine Taste gedrückt
- werden, womit kein auch noch so leiser Pipser über den Lautsprecher gelangt.
- (Dies ist nicht nur zum Schutz von gestressten Eltern, Ehefrauen,... , sondern
- zum reinen Selbstschutz!)
-
- Nach dem Logo (mit irgendeiner Taste quittieren) wird nun endlich gespielt.
-
- Das Ziel des Spieles ist, mit dem Ball alle Blöcke von Spielfeld zu räumen.
- Dabei kannst Du mit Deinem Schläger am unteren Rand des Spielfeldes den Ball
- jeweils wieder nach oben katapultieren.
- Es stehen Dir folgende Manipulationen zur Verfügung:
-
- - linke SHIFT-Taste --> Schläger bewegt sich nach links
- - rechte SHIFT-Taste --> Schläger bewegt sich nach rechts
- - SPACE-Taste --> Schläger stoppt
-
- Der Ball übernimmt jeweils einen Teil der Energie des Schlägers, so daß es
- sich lohnt, den Ball mit stehendem Schläger zurückzuschlagen.
-
- Mit der Zeit kommen dann einige Steine vor, die Spezialfunktionen auslösen,
- wie:
- - Multiball
- - Extraball
- - Gravitation und deren Auflösung (Der Ball fliegt nicht mehr linear)
- - Magnet, was den sofortigen Tod bedeutet
- - Vertauschen der Steuertasten
-
- Du kannst mit folgenden Tasten noch weitere Funktionen auslösen:
-
- - 'M' Sound-Effekte ein-/ausschalten
- - 'G' Falls der Ball nicht mehr herunterkommt, kann eine kurze Gravitation
- simmuliert werden
- - ESC Verläßt das Spiel sofort
- - alle anderen Tasten
- Anzeige des Hilfebildschirms
-
- So, das wärs eigentlich schon, was zum Spielen von Römms-Plöp zu sagen ist.
-
- Wenn es Dich interessiert, dann kannst Du noch weiterlesen, denn auf den
- nächsten paar Seiten versuche ich, den Aufbau des Spieles im Groben zu be-
- schreiben.
-
- Natürlich stehe ich auch für irgendwelche Fragen, Kritiken oder Verbesserungs-
- vorschläge gernen zur Verfügung.
-
- Nun aber viel Spaß beim Spielen
-
- Peter Messmer
-
-
- Das Programm
- ------------
-
- Das Programm stellte ich unter das selbe Motiv wie das ganze Spiel:
-
- Es soll so einfach wie möglich aufgebaut sein, aber nicht einfacher!
-
- Ob mir das gelungen ist, kann ich nicht beurteilen; ich kann nur versuchen, den
- Ablauf etwas zu erläutern:
-
- Zuerst wird festgestellt, ob die nötige Grafikkarte vorhanden ist. Ist dies
- nicht der Fall, dann wird das Programm abgebrochen. Sonst werden die bool'schen
- Vriablen Mono und ATT dem Adapter entsprechend gesetzt. Somit kann jederzeit
- wieder festgestellt werden, ob ein Farb- oder Monochromadapter vorliegt.
-
- Handelt es sich um ein System mit EGA-Karte, dann wird die Palette mit den
- nötigen Farben besetzt.
-
- Nun werden die einzelnen Pictures gezeichnet und auf dem Heap gespeichert. Bei
- EGA und Hercules-Systemen wird auch noch der Help-Text auf der nächsten Bild-
- schirmseite aufgebaut, damit dieser dann später möglichst schnell zur Verfügung
- steht.
-
- Anschließend wird das Logo gezeigt, wobei die jeweiligen Schattierungen durch
- verschobenes Schreiben erreicht werden. Als Abschluß des Logos wird die Musik
- ausgegeben, wobei jedesmal gecheckt wird, ob die Töne zu Lautsprecher gelangen
- dürfen oder nicht.
-
- Danach gelangt das Programm in eine Schleife, die den gesamten Spielablauf
- wiederholt, bis auf die Frage 'Nochmal ? (J/N)' mit 'N' geantwortet wird.
-
- Bei jedem Level wird zuerst das Rahmenfeld aufgebaut und dann die Pictures, die
- ja auf dem Heap vorhanden sind, auf das Feld gesetzt. Das Setzen erfolgt nach
- den Werten im Konstantenarray, wobei die einzelnen Zahlen den Arten der Steine
- entsprechen:
-
- - 0 Kein Stein
- - 1 normaler Stein
- - 2 fester Stein
- - 3 Extraball
- - 4 Multiball, maximal 4 pro Level
- - 5 Gravitation
- - 6 Auflösung der Gravitation
- - 7 Magnet
- - 8 Umtausch der Steuertasten
-
- Da alle Steine gleich groß sind und der Hintergrund völlig einheitlich ist,
- muß nur ein einziges Hintergrund-Bild gerettet werden.
-
- Nun beginnt die Simulation des Balles. Zuerst wird der Ball an seiner Ausgangs-
- position hingesetzt, wobei natürlich vorher noch der Hintergrund gerettet wird.
- In der Schleife wird nun jedesmal zuerst der Hintergrund restauriert und dann
- geprüft, ob noch weitere Bälle zu zeichnen sind. Ist dies nich der Fall, so
- kann die neue Position des Balles berechnet werden. Liegt diese Position inner-
- halb des Gebietes, das eventuell mit Steinen besetzt ist, dann wird überprüft,
- ob die neue Position einen Stein berührt.
-
- Ist dies der Fall, dann wird mit den beiden Geschwindigkeits-Vektoren die
- Richtung, in der der Ball auf den Stein trifft, bestimmt. Nun kann auch die
- Position berechnet werden, auf die dann der Ball gesetzt werden muß. Diese
- Operation muß erfolgen, denn im Falle eines Steines mit Attribut 2 darf der
- Ball nicht in den Stein hineingestzt werden, da sonst der Ball im Stein gefan-
- gen wäre (ständige Umkehr der Vektoren).
-
- Ist die neue Position errechnet, wird die dem Stein-Attribut entsprechende
- Aktion ausgelöst. Meistens wird dann der Stein-Hintergrund auf das Feld
- kopiert, um dem Stein verschwinden zu lassen. (Ausnahme: Attribut 2)
-
- Als Abschluß wird dann der Ball an die neue Position gesetzt, womit der ganze
- Ablauf von neuem beginnt. Bei jedem Durchlauf wird jedoch das Tastatur-Status-
- Byte getestet, um festzustellen, ob eine der <SHIFT>-Tasten gedrückt wurde.
- Dementsprechend wird dann der Schläger bewegt, wobei gleich wie mit den Bällen
- verfahren wird.
-
- Bei den Bällen wurde der rekursive Aufruf verwendet, um einen sauberen Stack
- für die Hintergründe zu schaffen. Würde man nämlich die Hintergründe in einer
- normalen FOR-Schleife retten und sie mit der selben Schleife wieder auf das
- Feld bringen, dann hätte man am Schluß den Hintergrund des letzten Balles
- auf dem Feld. Dieser Hintergrund könnte jedoch wieder einen Ball beinhalten,
- womit am Schluß irgendwelche Ball-Leichen auf dem Spielfeld zurückblieben.
-
- Die Ballsimulation wird solange wiederholt, bis entweder alle Steine mit
- Attribut 1 vom Feld verschwunden sind, oder bis kein Ball mehr übrig ist.
- Im ersten Fall wird das nächste Level aufgebaut und der ganze Vorgang wird
- wiederholt.
- Falls jedoch alle Bälle verloren gegangen sind, dann wird die Meldung 'Game
- over' ausgegeben und man muß wieder von vorne beginnen.
-
- Das wäre so in groben Zügen die Arbeitsweise des Programmes Mega-Bolo. Mir
- ist klar, daß es einige Stellen gibt, die man noch besser strukturieren kann.
- Man muß jedoch bedenken, daß jede Prozedur wiederum einen relativ langsamen
- Subroutinen-Aufruf zur Folge hat, sodaß es manchmal schneller ist, einige
- Zeilen mehr zu tippen, als diese Befehle zu einer Prozedur zusammenzufassen.
-
- Auch bevorzugte ich manchmal eine globale Variable einer lokalen, denn globale
- sind nun einmal, wenn auch nur ein klein bißchen, schneller als lokale!
-
- Etwas ähnliches ist zum <Ctrl>-<Break> zu sagen. Natürlich wäre es gut, wenn das
- Spiel auch über diesen Weg abgebrochen werden könnte, doch scheint mir der
- Aufwand, der dazu getrieben werden müßte (Einbinden der Unit DOS einzig des-
- wegen oder Byteweise den Code eingeben mit Inline) im Verhältnis zum Ertrag
- zu hoch.
-
-
-
-
-
-
-
-