Seu programa precisa usar uma sequência de linhas múltiplas, assim:
#############
# #
# p #
# #
#############
p
é o jogador e #
é um bloco.
Agora abaixo disso, no terminal, deve haver uma linha de entrada dizendo:
How do you want to move?
Se o jogador digitar que l
ele terá que andar para a esquerda quando não houver um bloco, caso contrário, quando houver um bloco, ele não poderá passar e não se moverá, é claro, agora a saída no terminal deve ser atualizada ( e a saída anterior limpa / substituída):
#############
# #
# p #
# #
#############
Ele pode digitar l
para esquerda, r
para direita, u
para cima e d
para baixo.
A entrada sempre será multilinha, mas nem sempre será preenchida com espaços em um retângulo perfeito. Além disso, os hashes podem estar em qualquer lugar da string e nem sempre serão conectados um ao outro. Por exemplo:
## ##
# #
## p
#
é uma masmorra válida. (observe a falta de espaços à direita em cada linha)
Se o jogador sair da corda, ele não precisa ser exibido. Mas se ele voltar mais tarde, ele deve ser exibido novamente.
E os limites de "fora" da corda são a length(longest_line)
pelo number_of_lines
retângulo, por isso mesmo se uma linha não é preenchido com espaços à direita, esse local não é considerado fora dos limites. Exemplo usando o calabouço anterior:
## ##
# #p
##
#
A segunda linha não tinha um espaço onde o p está agora, mas isso não importa.
Finalmente, seu programa deve fazer um loop para sempre, recebendo informações.
Casos de teste
Caso de teste 1:
####
# p#
#
####
How do you want to move?
d
####
# #
# p
####
Caso de teste 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 #
####
Claro, estes não estão completos. Seu código deve repetir para sempre e limpar a tela entre cada saída .
Sua saída pode solicitar entrada como How do you want to move?\n<input>
ou How do you want to move?<input>
( ou seja, você não precisa da entrada em uma linha em branco) e não precisa de uma linha vazia entre a linha final da masmorra e a solicitação. (eles não podem estar na mesma linha)
As brechas padrão não são permitidas! Isso é código-golfe, então o código mais curto em bytes vence!
l
, r
, u
ou d
) pode ser qualquer coisa, e não apenas "Como você deseja mover"? Realmente não afeta as respostas, exceto no campo de golfe.