Asteroid - Das ultimative Ballerspiel
von Johannes Schmitz

Es geht um alles, um die ganze Welt! Ein Asteroid bedroht die Erde, nur du kannst sie retten! Du sitzt am Zielpult einer gigantischen Laserkanone und kannst den Asteroiden abschießen, sodass die Bruchstücke die Erde verfehlen. Aber du musst rechtzeitig reagieren und genau treffen! Sobald sich der Asteroid bis auf sieben Millionen Kilometer der Erde genähert hat musst du den Laser abfeuern. Und du musst den Strahl über längere Zeit im Ziel halten. Nur so erreicht der Fremdkörper schließlich die Temperatur, die ihn zerreißt.
Ganzen Artikel lesen...
Für das Spiel brauchst du einen grünen Laser, nur er hat genügend Energie. Mit einem roten Laser brauchst du es gar nicht erst versuchen. Sobald der Asteroid im Bildschirm sichtbar wird musst du genau in die obere LED-Reihe zielen und den Strahl ruhig halten. Du darfst den Laser auf keinen Fall zu früh einschalten, denn dann reicht die Energie nicht! Aber spätestens eine Sekunde nachdem der Asteroid am Schirm erscheint musst du treffen. Das Zielobjekt kommt immer näher. Lass dich nicht von der Angst lähmen und halte weiter genau drauf. Die obere LED-Reihe liegt scheinbar über dem Ziel. Aber genaue Berechnungen der von Einstein gefundenen Krümmung des Raums weisen genau auf diesen Zielpunkt. Solange keine Gravitationswellen auftauchen wirst du das Ziel zerstören. Der Asteroid zerplatzt kurz vor dem Einschlag. Die Menschheit wird dir zu Füßen liegen. Aber wenn du versagst, dann gute Nacht!

Das Spiel wird mit einem Euro gestartet und automatisch so oft wiederholt wie es dir gelingt die Menschheit zu retten. Du musst aber einen Abstand von mindestens zwei Metern einhalten, sonst kann es ja jeder. Lade deine Freunde ein, jeder darf mal die Welt retten. Aber wer daneben ballert muss den nächsten Euro einwerfen.
Technische Details
Die obere LED-Reihe liegt am Pin C0 des Mega8. Er ist normalerweise als Ausgang geschaltet. Schaltet man jedoch den Port als Eingang um, kann jede der LEDs als Fotodiode dienen. ADC(0) liest die Spannung nach einer Millisekunde. Je größer die Helligkeit desto größer die gemessene Spannung. Ein Messwert von 300 entspricht einer Spannung von ca. 1,2 V, die bei direktem Laserbeschuss erreicht wird. Die Sub Laser führt die Messung aus, das Ergebnis erscheint in der Variablen Licht. Das Messverfahren wurde bereits im ELO-Labortagebuch beschrieben.
Sub Laser
Do
Loop Until Timer2 > 100
Portc.0 = 0
Ddrc.0 = 0
Waitms 1
Licht = Getadc(0)
Ddrc.0 = 1
Portc.0 = 0
End Sub
Der Rest des Programms ist einfach. Es werden bestimmte LEDs eingeschaltet um den näher kommenden Asteroiden darzustellen. Zwischendurch wird immer wieder die Helligkeit gemessen um einen Fehler des Spielers zu erkennen. Einen Fehler tritt auf, wenn der Grenzwert der Helligkeit schon vor dem Spiel erkannt wird oder wenn in der entscheidenden Phase die gemessene Helligkeit unter dem Grenzwert liegt.
Fehler = 0
Laser : If Licht > 300 Then Fehler = 1 'zu früh geschossen!
Leds(6) = &B0000100000
Waitms 1000
Laser : If Licht < 300 Then Fehler = 1 'nicht getroffen ...
Waitms 1000
Leds(5) = &B0000100000
Leds(6) = &B0001110000
Leds(7) = &B0000100000
Laser : If Licht < 300 Then Fehler = 1
Waitms 1000
Leds(3) = &B0000100000
Leds(4) = &B0001110000
Leds(5) = &B0011111000
Leds(6) = &B0111111100
Leds(7) = &B0011111000
Leds(8) = &B0001110000
Leds(9) = &B0000100000
Laser : If Licht < 300 Then Fehler = 1
Waitms 500
Die Lichtmessung funktioniert nicht mit einem roten Laser, nur die Lichtquanten eines grünen Lasers haben genügend Energie. Wer allerdings keinen hat kann das Spiel auch mit einer weißen LED-Taschenlampe aus geringer Entfernung testen.
Download: Quelltext und Hex-File
Siehe auch:
Ping-Pong-Bausatz
Programmieradapter

Lernen Sie die ganze Vielfalt vom Franzis Buch- und Softwareverlag kennen