39
Das eigentliche Spiel läuft in einer Endlosschleife . Nachdem der x-Wert für den Start des Invaders festge-
legt wurde, startet eine Schleife, die den Invader in insgesamt fünf Schritten bis in die unterste Zeile der
LED-Matrix bringen soll . Die Variable Invader bezeichnet die Position des Invaders in x-Richtung . Da das
Invaderschiff zwei LEDs breit ist, kann die Position seiner linken LED nur auf den ersten vier LEDs einer
Zeile sein .
Dabei wird jedes Mal zuerst geprüft, ob der Invader vom Feuerstrahl getroffen wurde . Ist das der Fall,
wird der Schleifenzähler Index wieder auf 0 gesetzt und der Invader startet wieder in der obersten Zeile
an einer zufälligen Position .
Wurde der Invader nicht getroffen, werden die beiden LEDs ein- und nach 200 Millisekunden wieder
ausgeschaltet . Danach beginnt der nächste Durchlauf eine Zeile weiter unten . Ist der Invader unten ange-
kommen, flackert die lila LED am Pin P1 viermal kurz . Der Flackerlichteffekt entsteht dadurch, dass die
Einschaltzeit in jedem Zyklus länger als die Ausschaltzeit ist .
Drückt man auf die Taste A, soll sich das Spielerschiff um ein Rasterfeld nach links bewegen . Dazu wird
der Wert der Variable Spieler um 1 reduziert . Das soll aber nur passieren, solange dieser Platzhalter noch
größer als 0 ist . Bei 0 steht das Spielerschiff in der ersten Spalte der LED-Matrix ganz links und kann sich
nicht noch weiter nach links bewegen . Ein wenn ... dann-Block fragt innerhalb des Blocks wenn Knopf
A gedrückt den aktuellen Wert des Platzhalters Spieler ab .
Auf die gleiche Weise bewegt sich das Spielerschiff nach rechts, wenn man die Taste B drückt .
Drückt man beide Tasten A und B gleichzeitig, soll das Spielerschiff feuern . Der Feuerstrahl soll sehr
schnell von unten nach oben laufen und dann eine kurze Zeit lang in voller Länge leuchten .
Zuerst wird die aktuelle Position des Spielerschiffs zusätzlich in der Variablen Feuer gespeichert, damit
es zu keinen Fehlern kommt, wenn sich das Spielerschiff während des Feuerns bewegt . Anschließend
zählt eine Schleife hoch und schaltet schnell hintereinander die LEDs in der durch Feuer angegebenen
Spalte von unten nach oben ein, was der Betrachter als kurzes Aufflackern von unten nach oben wahr-
nimmt .
Während der Feuerstrahl leuchtet, soll geprüft werden, ob der Invader getroffen wurde . Der Invader
wurde getroffen, wenn sich das Spielerschiff und damit auch der Feuerstrahl während des Feuerns auf
der gleichen X-Koordinate wie eine der beiden LEDs des Invaders befinden . Das wird in einer wenn ...
dann ...-Abfrage abgefragt .
Wenn der Invader getroffen wurde, flackert die orange LED am Pin P2 viermal . Die Variable Treffer wird
auf wahr gesetzt, was der Hauptschleife signalisiert, dass in der oberen Zeile ein neuer Invader starten
muss .
Nach einer deutlich längeren Pause von 100 ms, während der alle vier LEDs des Feuerstrahls leuchten,
schaltet eine weitere Schleife sie wieder aus . Diesmal ist keine Wartezeit eingebaut, die LEDs werden
gleichzeitig ausgeschaltet . In Wirklichkeit wird eine nach der anderen LED ausgeschaltet, was aber so
schnell geht, dass man es nicht wahrnimmt .