プログラムは、次のように複数行の文字列を取る必要があります。
#############
# #
# p #
# #
#############
p
プレイヤーで#
あり、ブロックです。
ターミナルの下には、次のような入力行があります。
How do you want to move?
プレーヤーl
がブロックがないときに左に歩く必要があると入力した場合、それ以外の場合、ブロックがあるときは通過できず、もちろん移動しません。ターミナルの出力を更新する必要があります(および以前の出力がクリア/上書きされました):
#############
# #
# p #
# #
#############
彼はl
左、r
右、u
上、d
下のどちらでも入力できます。
入力は常に複数行になりますが、完全な長方形にスペースが埋め込まれるとは限りません。さらに、ハッシュは文字列のどこにでも置くことができ、常に互いに接続されているわけではありません。例えば:
## ##
# #
## p
#
有効なダンジョンです。(各行の末尾にスペースがないことに注意してください)
プレイヤーがストリングの外に出た場合、彼は表示される必要はありません。しかし、彼が後で戻ってきた場合、彼は再び表示される必要があります。
そして、「外」の境界文字列がされているlength(longest_line)
ことにより、number_of_lines
1行が右側のスペースで埋めていない場合でも、長方形、そう、その場所は、範囲外とみなされていません。以前のダンジョンを使用した例:
## ##
# #p
##
#
2行目には、pが存在するスペースがありませんでしたが、それは問題ではありません。
最後に、プログラムは入力を受け取って永久にループする必要があります。
テストケース
テストケース1:
####
# p#
#
####
How do you want to move?
d
####
# #
# p
####
テストケース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 #
####
もちろん、これらは完全ではありません。コードは永久にループし、各出力の間の画面をクリアする必要があります。
あなたの出力は、How do you want to move?\n<input>
またはとして入力を要求することができますHow do you want to move?<input>
(つまり、空白行に入力する必要はありません)。また、ダンジョンの最後の行とプロンプトの間の空行は必要ありません。(ただし、同じ行に入れることはできません)
標準の抜け穴は禁止されています!これはコードゴルフなので、バイト単位の最短コードが優先されます!
l
、r
、u
、またはにd
)「移動したいどうすればよい」だけではなく、何もすることができますか?ゴルファー以外の答えにはあまり影響しません。