Ich habe mir daraufhin das Spiel auf seiner Website angeschaut. Es ist ganz simpel. Die Regeln koennten kaum einfacher sein:
(Hier auch auf Deutsch)https://help.gnome.org/users/lightsoff/stable/rules.html.en hat geschrieben: 1. The game begins with a pattern of lights on the 5x5 grid.
2. Select a tile to toggle its state and its non-diagonal neighbors state.
3. Once you have successfully turned off all the lights, you complete that level and move on to the next.
Da habe ich Lust bekommen, mal wieder was mit Ncurses zu programmieren, weil dieses Spiel so geeignet dafuer erschien ... eine Terminal-Version von Lightsoff.
Also habe ich mich hingesetzt und ein paar Stunden programmiert. Dabei konnte ich auf Code zurueckgreifen, den ich damals, motiviert durch heinz' Dungeon-Crawler-Thread, geschrieben hatte.
Am gleichen Abend hatte ich noch eine rudimentaer laufende Version fertig. In den Tagen danach habe ich die dann vor allem optisch poliert.
Nun ist das lediglich 222 Zeilen C-Code umfassende Spielchen fertig.
(Da Lights Off nach einem Song benannt zu sein scheint , habe ich meinen Klon, auch nach einem Song benannt: Lights Out von UFO. Der muss beim Spielen natuerlich in Dauerschleife gehoert werden. )
Ich liefere euch das Spiel in Source-Form aus. Ihr muesst also selber kompilieren.
Da ich kein aktuelles Debian habe und auch nicht schnell mal eine VM aufsetzen kann, schreibe ich euch die Anleitung nach bester Vermutung. Bitte korrigiert mich falls noetig!
Ihr muesst den Quellcode des Spiels runterladen. Das ist nur eine Datei: http://tmp.marmaro.de/dfde/lightsout.c
(Alternativ 42037, dort muss allerdings die Dateiendung `.txt' entfernt werden.)
Dann muesst ihr auf eurem Computer ein Buildsystem mit Ncurses einrichten. Dafuer sollte es ausreichen, die folgenden zwei Pakete zu installieren: gcc libncurses-dev
Anschliessend koennt ihr das Programm mit diesem Befehl im Verzeichnis mit der Code-Datei bauen:
Code: Alles auswählen
cc lightsout.c -o lightsout -lncurses
Code: Alles auswählen
./lightsout
Die Schwierigkeit der Level ist zufallsbasiert, daher koennen hoehere Level auch manchmal leicht sein. Jedenfalls braucht man maximal so viele Schaltvorgaenge wie die Levelnummer.
Ich bin gespannt, bis zu welchem Level ihr kommt.
Insgesamt bin ich immer wieder erstaunt, wie einfach es ist, mit Ncurses ``grafische'' Oberflaechen zu bauen, selbst in C. Vielleicht kann ich euch mit dieser Begeisterung ein bisschen anstecken.
Gerne beantworte ich eure Fragen zum Code und erklaere ihn, wo noetig.