So, kleines Update von mir:
Das Binärrelease gibt es bis auf weiteres nur für Windows und nur über den folgenden Link, der von Zeit zu Zeit aktualisiert wird:
ExomoSnake.7z
Änderungen am Spiel gegenüber letzter Version:
- Die 180° Bewegung ist nicht mehr möglich, man kann also nicht mehr direkt sterben wenn man in die falsche Richtung lenkt.
- Geschwindigkeit etwas erhöht, mir war es zu langsam.
- Position des Dreiecks etwas korrigiert damit es mehr in der Mitte des Feldes erscheint.
Sonstige Änderungen:
- Unterstützung für Linux. CMake Dateien eingefügt und String-Konstanten auf wstring geändert damit Umlaute korrekt angezeigt werden.
- Alle Dateien auf UTF-8 Kodierung geändert (auch wichtig für die Texte die ausgegeben werden)
- Readme.md hinzugefügt damit die Projekt Startseite auf gitlab nicht so leer ist. Darin enthalten ist auch eine Kurze Anleitung wie man das Projekt bauen kann.
Einen Eingabebuffer weiß ich noch nicht ob ich den wirklich einbauen will. Das war nicht unbedingt geplant, aber ich werde mal darüber nachdenken. Wenn dann maximal für zwei Bewegungen, so dass sichere U-Turns möglich sind. Alles darüber hinaus scheint mir für den Spieler mehr Verwirrung als Hilfe zu sein.
@theSplit: Ich habe noch keine Ahnung warum das bei dir nicht läuft. Ich habe es auch auf einem Windows 7 getestet, daran alleine kann es nicht liegen. So spontan habe ich keine Erklärung für das Verhalten. Eventuell passt etwas mit der Zeitberechnung für die Bewegungen nicht, das muss ich mir mal noch näher anschauen. Hast du irgendwelche Besonderheiten an deinem System?
@Roin:Wenn du wirklich sicher sein willst das die Punkte erreichbar sind, kannst du eine Art Breitensuche über das ganze Spielfeld machen. Ausgehend von einem bekannten freien Feld (Startfeld, Position der Schlange oder so) "besuchst" du alle Nachbarfelder wenn die ebenfalls frei sind, dann wieder deren Nachbarfelder usw. Die besuchten Felder werden als "erreichbar" markiert (und dürfen dann auch nicht nochmal besucht werden). Wenn du noch Sackgassen eliminieren willst musst du dir die Felder merken, die drei Wände als Nachbarn haben (also als "unerreichbar" markieren) und von denen ausgehend wieder solange das Nachbarfeld als unerreichbar markieren, wie es 3 Wände (bzw. 2 Wände und ein anderes unerreichbares Feld) gibt. Alle Felder die dann noch als "erreichbar" übrig bleiben sind gültige Positionen für Punkte (außer wenn die Schlange gerade darauf ist). Die Berechnung müsstest du dann immer machen wenn sich die Hindernisse ändern.
So viel zur Theorie. Das zu implementieren ist natürlich etwas Aufwand
