Tjoar, ich bin Fan des Sokoban-Spielprinzips und dachte mir, so ein Spielchen könnte ich mal für Python programmieren^^.
Die Regeln für Sokoban sind schnell erklärt: Der Spieler muss Kisten an vorgegebene Kistenplätze schieben, um das Level zu schaffen. Dabei kann der Spieler nur eine Kiste gleichzeitig schieben und keine ziehen. Ideale Ausgangslage für ein Rätsel- oder Knobelspiel^^.
Screenshots:




Downloadlinks:
- Nur Quelltext, ZIP-Datei (ca. 1.1 MB groß)
- EXE-Datei inkl. Quelltext, ZIP-Datei (ca. 25 MB groß; auf Dropbox gehostet)
- APK-Datei (ca. 8.3 MB groß; für Android)
Zum Ausführen bringen:
Die EXE-Datei ist unter Windows sofort lauffähig.
Wollt ihr den Quelltext zum Laufen bringen, müsst ihr die main.py mit dem Python-Interpreter ausführen. Die erfoderlichen Kivy-Bindings müssen installiert sein; auf der entsprechenden Kivy-Installations-Seite sind die erforderlichen Schritte gut erklärt. Linux-Nutzer haben eine eigene Installations-Seite. Das Spiel wurde so geschrieben, dass es in den Python-Versionen 2.7 und 3.6 einwandfrei läuft; andere Versionen von Python habe ich nicht getestet.
Theoretisch sollte das Spiel auch auf Macs laufen, mangels Gerät kann ich dazu allerdings nicht sagen^^.
Android-Benutzer haben zwei Möglichkeiten:
- Möglichkeit 1: Die APK herunterladen und installieren. Allerdings muss in den Android-Einstellungen die "Installation von Apps unbekannter Herkunft" erlaubt werden.
- Möglichkeit 2: Ihr besorgt euch vom Googles PlayStore den "Kivy Launcher" und entpackt die Quelltext-ZIP-Datei in den Ordner "/sdcard/kivy/". Dann könnt ihr mit dem Kivy Launcher direkt den Quelltext starten.
Steuerung:
- WASD, Richtungs- oder Nummerntasten: Die Figur bewegen.
- R: Level neu starten
- U: Zug rückgängig machen
Unter Android ist auch die Bewegung mittels Wisch-Gesten möglich (unten, oben, links rechts).
Levels:
Die Levels hab ich nicht selbst gebaut, stattdessen gibts einige nette Leute im Internet, die ihre Sokoban-Levels unter eine Lizenz stellen, die die Verwendung in eigene Programme erlaubt (Interessante Nebeninfo dabei: Genau deshalb haben fast alle Sokoban-Apps im Googles PlayStore immer dieselben Levels^^). Für Anfänger sind besonders die Levelsets von einem gewissen David W. Skinner (erste Auswahl im Levelauswahl-Bildschirm) sehr empfehlenswert, da in den meisten seiner Levels nur wenige Züge möglich sind, zur Lösung aber trotzdem "um die Ecke" gedacht werden muss.
Sonstiges:
(Der Abschnitt dürfte nurnoch für Programmierer interessant sein, hier liste ich nurnoch Anekdoten von mir auf, weil ich grad Lust drauf habe^^)
Programmiert wurde das Ganze in Python; als Framework kam Kivy zum Einsatz, was ich hauptsächlich haben wollte, weil man damit auch für Android entwickeln kann^^. Ist aber auch sonst ein nettes Framework, das mit seinen Layout-Managern ein bisschen an Java-GUI-Programmierung erinnert^^.
Programmiertechnisch hab ich versucht, das Ganze ein bisschen zu kapseln. So enthält z.B. die models.py sämtliche Logiken, wie ein Sokoban-Spiel abzulaufen hat. Bevor ich mit Kivy gearbeitet habe, habe ich mir mittels cmdviewer.py eine eigene Text-GUI geschrieben. Das hat den riesigen Vorteil, dass ich damit die ganzen Logik-Geschichten auf Herz und Nieren prüfen konnte und Änderungen auch vergleichsweise schnell in besagte Text-GUI sichtbar wurden. Ereignisprogrammierung ist so ein tolles Konstrukt^^.
Die Kivy-GUI in kivyviewer.py hatte ich anfangs massiv unterschätzt; das Ding hat mehr Quelltextzeilen als die Sokoban-Logiken, generell hab ich mehr Zeit in die GUI gesteckt als ich eigentlich vorhatte. Waren gefühlt sogar mehr als 50% der Zeit, die ich fürs Programmieren des gesamten Projekts brauchte. Am Schluss war ich froh, es endlich fertiggestellt zu haben und konnte es gegen Ende echt nicht mehr sehen^^.
Schlussworte:
Tjoar... Ich wünsche viel Spaß beim Ausprobieren des Spiels, und beim Durchschauen des Quelltextes

