Die Ping-Pong Platine
als Plattform für
ein BREAKOUT Spiel
Eben so legendär wie das alte „Tele-Spiel-Tennis“ sind wohl die „BREAKOUT“ Varianten. Ziel des Spieles ist es, mit einem Ball und einem Schläger, eine Wand aus Steinen zu zerstören. Der Ball prallt von den Steinen ab und wird mit dem Schläger zurück geschlagen.
Das Spiel ist in BASCOM-AVR programmiert. BASCOM-AVR kann in der Demo Version bis zu 4kB AVR-Maschinencode erzeugen. Dieses Spiel schöpft den Umfang mit 4086 Byte weitgehend aus. Hardware Modifikationen an der Ping-Pong Platine sind nicht erforderlich.
|
|
Zum Spiel:
Gesteuert wird der Schläger mit dem rechten Poti. Eine Linksdrehung führt zu einer Linksbewegung des Schlägers. Bei meinem Ping-Pong Gehäuse habe ich deshalb den rechten Knopf des Potis so eingestellt, das die Markierung nach oben zeigt, wenn der Schläger in der Mittelposition ist. Das ist eine Erleichterung für diejenigen die das Spiel zum Ersten mal spielen.
Das Spiel wird mit Einwurf einer Münze gestartet. Dadurch gibt der Spieler 3 komplette Spiele mit je 3 Bällen frei. Das Spiel beginnt mit einer moderaten Geschwindigkeit. Je nach erreichter Punktzahl (Level) wird der Ball dann schneller. Damit immer genügend Steine vorhanden sind, werden die vorhandenen Steine nach einiger Zeit in Richtung Schläger bewegt. Somit wird im oberen Bildschirmteil Platz geschaffen für zwei weitere Reihen Steine. Ein Spiel endet wenn der Ball 3 mal den Schläger verfehlt hat. Danach wird für fünf Sekunden die erreichte Punktezahl des Spieles angezeigt. Die Spielpunktzahl wird mit der im EEPROM gespeicherten Highscore-Punktzahl verglichen und gegebenenfalls ersetzt. Somit bleibt der Highscore auch nach Stromverlust erhalten. Sind drei komplette Spiele durchlaufen geht der Prozessor in den Powerdown Betrieb, aus dem er mit neuem Münzeinwurf aufgeweckt werden kann. Nach dem aufwecken aus dem Powerdown Modus wird vor dem jeweils ersten Spiel der Highscore angezeigt. Da die Punkteanzeige nur drei Dezimalstellen hat und der Highscore meines Sohnes derzeit bei 776 liegt, musste noch eine Anzeige der Tausender Stelle her. Diese ist derart umgesetzt, das in der oberen Reihe je tausend Punkte eine LED leuchtet, wäre schön wenn die mal jemand sehen würde.
Noch ein paar Worte zur Ball-Logik, sie ist am Ende viel einfacher geworden als ich erwartet hatte. Musste sie wegen der 4kB 'Grenze' auch!
Ist der Ball in einer Aufwärtsbewegung und trifft auf einen Stein und unter diesem Stein ist noch ein weiterer vorhanden, dann wird die X-Richtung gedreht. Ist darunter keiner vorhanden, dann wird die Y-Richtung gedreht.
Ist der Ball in einer Abwärtsbewegung und trifft auf einen Stein und über diesem Stein ist noch ein weiterer vorhanden, dann wird die X-Richtung gedreht. Ist darunter keiner vorhanden, dann wird die Y-Richtung gedreht.
Dadurch ergibt sich, na ja - wenigstens fast, das bekannte Ballverhalten.
Bei der Durchsicht des Quelltextes wird auffallen, das an einigen Stellen eine 'For-Next Schleife' erheblich zur Lesbarkeit beigetragen hätte. Dort waren auch mal welche, aber das 'Do-Loop Konstrukt' benötigte weniger Speicherplatz.
Ich möchte nicht schließen ohne noch ein Lob an das Erbauerteam (Vater und Sohn) der Ping-Pong Platine auszusprechen. Coole Plattform für Spielereien und mehr. Ich empfinde es keinesfalls als störend das die Serienausstattung der „Konsole“ ohne Ton daher kommt. Einen Ballverlust zum Beispiel, kann man genau so gut visualisieren.
Link zum YouTube Video: http://www.youtube.com/watch?v=JxbywAB74MQ
Link zum Quelltext in Bascom-AVR: hier der Quelltext
Link zur Hexdatei: hier die Hexdatei
Nun wünsche ich viel Spaß beim Spielen.