Dies ist eine Fortsetzung der Frage " Labyrinth drucken". Wenn Ihnen diese Frage gefällt, fügen Sie bitte weitere Algorithmen zur Labyrinthgenerierung hinzu;).
Für diese Aufgabe müssen Sie eine Spiel-Engine für einen Spieler implementieren, der den Schatz in einem Labyrinth finden und den Dungeon verlassen muss.
Die Engine beginnt mit dem Lesen des Labyrinths aus der Standardeingabe, gefolgt von einer Zeile mit einem einer Datei, die als Argument in der Befehlszeile angegeben ist. Als nächstes wird der Spieler .
(Punkt)@
an einer zufälligen Stelle auf der Karte platziert. Dann beginnt die Engine mit dem Player über Standard io zu interagieren:
Befehle von der Engine zum Spieler :
continue
: Spiel nicht beendet. Die Umgebung wird gedruckt, gefolgt von a.
. Der Spieler wird durch den@
Charakter dargestellt. Nicht beobachtbare Zellen werden durch dargestellt?
.finished
: Spiel beendet. Die Anzahl der Schritte wird gedruckt und das Spiel stoppt.
Befehle vom Spieler zur Engine :
north
: Bewegt den Spieler nach oben.south
: Bewegt den Spieler nach unten.west
: Spieler nach links bewegen.east
: Spieler nach rechts bewegen.
Jeder ungültige Befehl (z. B. das Schlagen einer Wand) vom Spieler wird ignoriert, aber dennoch gezählt. Sie können die Umgebung nach Ihren Wünschen definieren.
- Punkte für den kürzesten Code.
- Punkte für komplexe Umgebungen (z. B. große Bereiche drucken und Zellen ersetzen, die nicht sichtbar sind
?
). - Keine Punkte für Code, der das Io-Format nicht berücksichtigt
Beispiel :
In diesem Beispiel wird die Umgebung als 3x3-Zelle mit dem Player in der Mitte definiert.
$ cat maze
+-+-+
|#|
| |
+---+
$ python engine.py maze
|#
@
---
.
east
|#|
@|
--+
.
north
+-+
|@|
|
.
south
|#|
@|
--+
.
west
|#
@
---
.
west
|
|@
+--
.
north
+-+
@|
|
.
west
finished
7
Antworten:
C99, 771 Zeichen
Benötigt und nutzt Flüche. Nur eine Makroisierung für die Länge und die N- und M-Makros sollen die fehlenden minimalen und maximalen Opperatoren ersetzen, und ich denke, dass es nicht viel mehr zu tun gibt.
Es nimmt an dem Eingang maze überschreitet nicht 80 Zeichen breit, und daß den ein Labyrinth Dateinamen hat auf der Befehlszeile übergeben worden ist , und dass die Anzahl von Parametern ist gering genug , dass der Anfangswert von C kein Bewegungsbefehl ist.
Weicht insofern vom Standard ab, als Einzelzeichenrichtungsbefehle als Kleinbuchstaben der vorgeschlagenen verwendet werden.
Zeigt unbekannte Regionen als '?' S an.
Besser lesbar mit Kommentaren:
quelle