Es
handelt sich um das Spiel "Schiffe versenken", wobei der Spieler gegen
den ATMEGA antritt. Das Spiel funktioniert ohne Hardware-Erweiterungen,
profitiert aber von einem an PORT B7 angeschlossenen Lautsprecher, der
für Soundeffekte sorgt. Dazu eignet sich z. B. ein Piezo-Schallwandler,
der in Serie mit einem Widerstand von etwa 330 Ohm zwischen PORT B7 und
GND geschaltet wird.
Schiffe
aufstellen: Das Spielfeld besteht aus einem Quadrat aus 10x10 Feldern,
welches horizontal zentriert auf der 12x10-LED-Matrix abgebildet wird.
Nach dem Münzeinwurf platziert der Spieler fünf Schiffe der Längen 5,
4, 3, 3 und 2 auf dem Spielfeld, wobei sich die Schiffe nicht berühren
dürfen. Die beiden Drehregler des Ping-Pong-Spiels dienen zur
Einstellung der X- bzw. Y-Koordinate. Das Schiff lässt sich um 90 Grad
drehen, indem man es gegen eine Spielfeldkante schiebt, zu der es sich
dann parallel ausrichtet. Die linke und rechte Spalte der LED-Matrix
visualisieren einen Countdown, nach dessen Ablauf die Position für das
jeweilige Schiff eingefroren wird.
Zunächst
dürfen beide Kontrahenten abwechselnd feuern, wobei per Zufall
entschieden wird, wer die Schlacht beginnt. Das gegnerische Seegebiet
befindet sich nördlich des eigenen und scrollt in das Sichtfeld des
"Radarschirms", wenn der Spieler an der Reihe ist. Das Fadenkreuz
seines Zielfernrohrs verschiebt man wieder mit den Drehreglern, der
Countdown läuft sobald das Ziel nicht weiter variiert wird.
Parkpositionen am linken und rechten Bildschirmrand ermöglichen die
Unterbrechung des Spiels. Fehlschüsse werden auf der Karte als schwach
leuchtende Markierungen gekennzeichnet. Wird ein Segment eines Schiffs
getroffen, gerät es sofort in Brand, was sich durch ein rötliches
Flackern äußert. Nach jedem Treffer darf der jeweilige Spieler sofort
erneut feuern. Ein Schiff gilt als versenkt, wenn alle seine Segmente
zerstört wurden. Versenkte Schiffe werden im gegnerischen Spielfeld
hell leuchtend markiert. Vom Computergegner versenkte eigene Schiffe
erscheinen ebenso wie die gegnerischen Fehlschüsse als schwache
Leuchtpunkte. Das Spiel gewinnt, wer zuerst alle gegnerischen Schiffe
versenkt hat.
Das Programm wurde in C geschrieben und wird mit
dem avr-gcc cross-compiliert. Zu Debugging-Zwecken kann auch eine
Version für den Linux-PC mit gcc erzeugt werden. In diesem Fall werden
einige Lowlevel-Routinen durch entsprechende Terminalfunktionen
ersetzt. Ein zweiter Thread simuliert dabei den Timer-Interrupt zur
Aktualisierung der LED-Matrix. Download: Quelltext und Hexfile
Download: 1003schiffe11.zip