Ihr Programm muss eine mehrzeilige Zeichenfolge wie folgt enthalten:
#############
# #
# p #
# #
#############
p
ist der Spieler und #
ist ein Block.
Darunter im Terminal sollte eine Eingabezeile stehen, die sagt:
How do you want to move?
Wenn der Spieler tippt l
, muss er nach links gehen, wenn es keinen Block gibt, andernfalls, wenn es einen Block gibt, kann er nicht durchgehen und bewegt sich natürlich nicht, jetzt muss die Ausgabe im Terminal aktualisiert werden ( und die vorherige Ausgabe gelöscht / überschrieben):
#############
# #
# p #
# #
#############
Er kann l
für links, r
für rechts, u
für oben und d
für unten tippen .
Die Eingabe ist immer mehrzeilig, wird jedoch nicht immer mit Leerzeichen in einem perfekten Rechteck aufgefüllt. Darüber hinaus können sich die Hashes an einer beliebigen Stelle in der Zeichenfolge befinden und sind nicht immer miteinander verbunden. Beispielsweise:
## ##
# #
## p
#
ist ein gültiger Dungeon. (Beachten Sie das Fehlen von Leerzeichen in jeder Zeile)
Wenn der Spieler die Zeichenfolge verlässt, muss er nicht angezeigt werden. Wenn er später zurückkommt, muss er erneut angezeigt werden.
Und die Grenzen von „außerhalb“ der Zeichenfolge das sind length(longest_line)
durch number_of_lines
Rechteck, so dass selbst wenn eine Zeile mit Leerzeichen auf der rechten Seite nicht aufgefüllt, wird diese Position nicht der Grenzen betrachtet werden. Beispiel mit dem früheren Dungeon:
## ##
# #p
##
#
Die zweite Zeile hatte kein Leerzeichen, wo das p jetzt ist, aber das spielt keine Rolle.
Schließlich muss Ihr Programm für immer eine Schleife ausführen und Eingaben vornehmen.
Testfälle
Testfall 1:
####
# p#
#
####
How do you want to move?
d
####
# #
# p
####
Testfall 2:
####
p#
#
####
How do you want to move?
l
####
p #
#
####
How do you want to move?
d
####
#
p #
####
How do you want to move?
l
####
#
p #
####
How do you want to move?
l
####
#
#
####
How do you want to move?
r
####
#
p #
####
Natürlich sind diese nicht vollständig. Ihr Code sollte für immer eine Schleife bilden und den Bildschirm zwischen den einzelnen Ausgaben löschen .
Ihre Ausgabe darf zur Eingabe als How do you want to move?\n<input>
oder How do you want to move?<input>
auffordern (dh Sie benötigen die Eingabe nicht in einer leeren Zeile), und Sie benötigen keine leere Zeile zwischen der letzten Zeile des Dungeons und der Eingabeaufforderung. (Sie können jedoch nicht in derselben Zeile sein)
Standardlücken sind nicht erlaubt! Dies ist Code-Golf, also gewinnt der kürzeste Code in Bytes!
l
, r
, u
, oder d
) kann alles sein, nicht nur „Wie Sie verschieben möchten“? Es wirkt sich nicht wirklich auf die Antworten aus, außer auf Golf.