RSS-Feed  

31

Dec

Minesweeper für Android

Um das Thema Android noch ein wenig zu vertiefen habe ich mir das Ziel gesetzt, ein einfaches Spiel für Android zu entwickeln. Und als gäbe es es nicht schon in sämtlichen Variationen, habe ich mich für Minesweeper entschieden. Vor langer Zeit, als ich mich damals mit Java befasste habe, ich schon einmal ein Minesweeper geschrieben. Daher war ich zuversichtlich, dass es mir wieder gelingen würde. Wer mag kann sich die alte Java-Version auch ansehen. Die Android-Version sollte natürlich ein wenig hübscher werden und auch die Makel ihres Vorgängers beseitigen.

Jede Android Applikation besteht normalerweise aus mindestens zwei ebenen. Der Activity und einer View. Zusätzlich beschloss ich noch eine dritte Klasse hinzuzunehmen, um das Minenfeld zu verwalten. Diese dritte Klasse erzeugt im Constructor ein Minenfeld in einem dreidimensionalen Array. Wobei die erste und zweite Dimension die Höhe und Breite des Feldes darstellen. In der dritten Dimension wird einmal gespeichert, welche Zahl das Feld hat bzw. ob es eine Mine ist und welchen Status es hat. Der Status zweigt hierbei an ob ein Feld geöffnet, verdeckt oder mit einem Fähnchen versehen worden ist. Somit besteht das Array also aus Höhe * Breite * Zwei numerischen Werten.

Eine weiter Aufgabe die von der Minenfeld-Klasse übernommen wird, ist das Zeichnen. Damit das ganze Optischer etwas hübscher wirkt, als die Java Version, habe ich beschlossen auf Grafiken zurückzugreifen. Hierfür habe ich mich an mein Paint gesetzt und einen wunderhübschen Sprite erstellt:

Von diesem Sprite wird dann immer der entsprechende Ausschnitt in die Minenfeld-Grafik kopiert. Hierbei ist drauf zu achten, dass die Grafik in den Ordner drawable-nodpi muss, da sie sonst eventuell vom System verzerrt wird.

Die Hauptaufgabe der View ist die Benutzerinteraktion. Sie ist so definiert, dass sie ihr eigener OnTouchListener ist. Sie Reagiert auf die Berührungen des Benutzers und prüft mit Hilfe des Minenfeldes, ob der Benutzer einen gültigen Zug macht oder eine Mine aufgedeckt hat. Wurde eine Mine erwischt endet das Spiel und es wird so lange keine Interaktion mehr zugelassen, bis ein neues Spiel gestartet wird. Dies geschieht ebenfalls, wenn der Spieler alle Nicht-Minen aufdeckt und somit das Spiel gewinnt.

Schlussendlich bleibt noch die eigentliche Activity. Ihre einzige Aufgabe ist die Verwaltung des Menüs. Sie legt das Menü an und verwaltet die einzelnen Aktionen. Schlussendlich sieht das fertige Produkt wie folgt aus:

minesweeper2.png

Wer sich das Ganze nun auf seinem Android-Endgerät zu Gemüt führen will, für den habe ich die fertige APK-Datei auch online gestellt. Ihr findet sie unter folgendem Link:

http://master-iv.info/other/Minesweeper.apk