Schiffe versenken  

von Klaus Peichl

Elektronik-Labor  Labortagebuch  ELO  Mikrocontroller


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


 


Elektronik-Labor  Labortagebuch  ELO  Mikrocontroller