»SwingCross« ist ein kleines Spiel, welches ich im Frühsommer 2020 in Java programmiert habe, als ich im Rahmen meines Medieninformatik-Studiums gerade frisch gelernt hatte, wie man objektorientiert programmiert. Nachdem bereits zuvor jeder Kurs-Teilnehmer einen Minesweeper-Klon in Java umsetzen sollte, galt es als Nächstes, ein eigenes Spiel zu programmieren. Ich entschied mich, den Puzzle-Klassiker »Picross« umzusetzen und um einige Features zu erweitern. Dabei kam Javas internes GUI-Toolkit »Swing« zum Einsatz , welches dem Spiel seinen Namen verleiht.
Ein Picross, auch bekannt als Nonogramm, ist eine Art Bilderrätsel, welches 1986 von der japanischen Designerin Non Ishida erfunden wurde und vor allem durch diverse Videospielumsetzungen von Nintendo bekannt wurde. Das Spielprinzip ist einfach: Jedes Picross besteht aus einem Pixelraster und es gilt herauszufinden, welche Pixel eingefärbt werden sollen und welche nicht. Dazu stellt jede Reihe und Spalte Hinweise in Form von Zahlen bereit, die Aufschluss über die Pixel in dieser Reihe bzw. Spalte geben. Bei der Zahl »5« etwa müssen in der entsprechenden Reihe/Spalte genau 5 Pixel am Stück eingefärbt werden. Bei den Zahlen »2, 1, 3« müssen erst 2 Pixel am Stück, dann eins alleine und dann wieder 3 Pixel am Stück eingefärbt werden. »Malen nach Zahlen« meets »Sudoku«, quasi.
Lösen eines Picross – Beispiel
Schritt 1: Dieses Picross ist 5×5 Felder groß – die Reihen mit einer 5 können also direkt vollständig ausgefüllt werden
Schritt 2: Auch die dazwischenliegende Reihe kann direkt ausgefüllt werden: 3 einzelne Felder gefüllt, jeweils mit Zwischenraum = 5 Felder
Schritt 3: Gleichzeitig sind die erste und letzte Spalte gelöst – die übrigen Felder können also ausgeschlossen werden (mit Rechtsklick markieren)
Schritt 4: Durch die Eingrenzungen im vorherigen Schritt ergibt sich nun auch die zweite Reihe: 2 einzelne Felder, getrennt durch ein leeres Feld
Schritt 5: Übrig bleibt nur ein Feld in der ersten Reihe. Da Spalten 2 und 4 schon vollständig sind, kann es nur in die mittlere Spalte gehören
Schritt 6: Fertig gelöst! Das Motiv: Ein Haus.
In meiner Version von Picross gibt es 6 unterschiedliche Level sowie die Möglichkeit, zufallsgenerierte Level zu spielen. Das Spiel bietet jederzeit die Möglichkeit, Tipps anzuzeigen, wenn man nicht weiter weiß oder einen Fehler gemacht hat. Außerdem lassen sich in einem Editor eigene Muster zeichnen und in einer Datei speichern, die wiederum als spielbares Level vom Programm eingelesen werden können.
»Kniffel« in Java
Als Programmieranfänger hatte mir die Umsetzung viel Spaß gebracht. Nun hatte ich »Blut geleckt« und so habe ich mir wenig später eine weitere Herausforderung gesucht: das beliebte Würfelspiel »Yahtzee« (im Deutschen als »Kniffel« bekannt) in Java umzusetzen. Entstanden ist »Javatzee«! (Der Name ist vielleicht kein Highlight …)
Aller Anfang ist schwer
Ja, Swing war schon 2020 veraltet. Ja, niemand würde solche kleinen Spielchen heute ernsthaft als Java-Desktop-Applikation schreiben – sowas ist viel besser als Web- oder Mobilanwendung aufgehoben. Ja, den Game-of-the-Year-Award werde ich damit wohl nicht mehr abstauben. ;) Dennoch bin ich stolz auf SwingCross und Javatzee, stellen diese kleinen Projekte doch meine ersten Schritte in der Welt der Anwendungsentwicklung dar.
Beide Spiele gibt es hier als .jar-Datei zum Download (Java ist zum Ausführen erforderlich).