Snake

von Mirko Horstmann

Elektronik-Labor  Labortagebuch  ELO  Mikrocontroller


Neben dem Urvater aller Videospiele gibt es noch einige Klassiker, die sich auf der Spielekonsole umsetzen lassen. Das hier in einer einfachen Variante vorgestellte Spiel "Snake" taucht seit Ende der 70er Jahre in den verschiedensten Ausprägungen immer wieder auf, beispielsweise als Dreingabe zu Betriebssystemen oder Handys. Ziel des Spiels ist es, eine Schlange so über den Bildschirm zu steuern, dass sie nicht mit sich selbst oder dem Spielfeldrand kollidiert und dabei die zufällig auf dem Bildschirm platzierten Äpfel einsammelt. Jeder aufgesammelte Apfel verlängert dabei die Schlange um ein Stück, so dass das Spiel mit der Zeit immer schwieriger wird.

Bedienung

Die Steuerung der Schlange wäre mit Tasten vermutlich einfacher als mit den an der Pingpong-Konsole vorhandenen Reglern, so dass man sich durchaus überlegen könnte, die Hardware um einige Tasten zu erweitern - Lötpunkte mit Verbindungen zu I/O-Pins des ATMega8 sind auf der Platine ja vorhanden. Das hier vorgestellte Spiel kommt aber mit der Standardausstattung aus, wobei ein kurzer Dreh des rechten Reglers um mehr als 45 Grad in die eine oder andere Richtung die Bewegungsrichtung im bzw. gegen den Uhrzeigersinn ändert. Es ist darauf zu achten, dass nach der Richtungsänderung der Regler sofort wieder in die Mittelstellung gebracht wird, damit die Schlange sich nicht im Kreis dreht und so mit sich selbst kollidiert. Damit der Spieler weiß, wo sich die Mitte befindet, gibt es vor Anfang des Spiels eine kurze "Kalibrierungsphase", in der man diese suchen muss. Dazu bewegt man den Regler in Richtung der dargestellten Pfeile, bis diese durch eine Linie ersetzt werden, die man möglichst in der Mitte des Bildschirms platziert. Ist die Linie etwa anderthalb Sekunden ununterbrochen zu sehen gewesen, dann geht das Spiel los: fortan erscheint immer ein Apfel (blinkend) auf dem Bildschirm, den es einzusammeln gilt. Jeder Apfel bringt einen Punkt, nach Ende des Spiels erfolgt eine Punkteanzeige.



Programm

Die Ansteuerung des Bildschirms erfolgt, wie schon aus dem Laufschrift-Programm bekannt, in einer Timer-gesteuerten Interruptroutine, die sich die Pixeldaten aus einem globalen Array ("leds") holt. Zusätzlich gibt es ein Array, in dem der jeweils aktuelle Apfel eingetragen wird. Dieser wird bei jedem vierten Bildschirmaufbau mit in die Anzeige kopiert, so dass die Äpfel blinkend erscheinen. Die Position aller zur Schlange gehörenden Pixel sind außerdem in einem Ringpuffer ("snake") gespeichert, damit sie korrekt wieder vom Bildschirm gelöscht werden können.

Der Analog-Digital-Konverter arbeitet bei diesem Programm im sogenannten Free-Running-Mode, liefert also ständig einen 10-bit-Wert, der zu Anfang der Hauptschleife aus den Datenregistern ADCL und ADCH ausgelesen wird.

Das Programm unterstützt den aus dem Originalspiel bekannten Start durch Münzeinwurf. Die Funktion "sleepNow" ermöglicht dazu vor dem Standby nach Spielende am entsprechenden Eingang (INT0) den externen Interrupt, der durch Kontakt der beiden Drähte vor dem nächsten Spiel ausgelöst wird. Nach dem Aufwachen wird der Interrupt deaktiviert und INT0 wieder auf Ausgang geschaltet.

Entwickelt wurde das Programm mit gcc-avr. Download: C-Quellcode und Hexfile

Download:  Snake.zip


Elektronik-Labor  Labortagebuch  ELO  Mikrocontroller