Olá, estou com um problema em meu código que parece não ter muito nexo. Ao invés de mover meu herói para qualquer lugar, quantas vezes eu quiser (menos onde há os muros), ele apenas faz uma cópia do herói e limita-me à apenas duas jogadas. O código está abaixo:
require_relative 'ui'
def le_mapa(numero)
arquivo = "mapa#{numero}.txt"
texto = File.read arquivo
mapa = texto.split "\n"
end
def encontra_jogador(mapa)
caractere_do_heroi = "H"
mapa.each_with_index do |linha_atual, linha|
coluna_do_heroi = linha_atual.index caractere_do_heroi
if coluna_do_heroi
return [linha, coluna_do_heroi]
end
end
#não achei!
end
def calcula_nova_posição(heroi, direção)
case direção
when "W"
heroi[0] -= 1
when "S"
heroi[0] += 1
when "A"
heroi[1] -= 1
when "D"
heroi[1] += 1
end
heroi
end
def joga(nome)
mapa = le_mapa 1
while true
desenha mapa
direção = pede_movimento
heroi = encontra_jogador mapa
nova_posição = calcula_nova_posição heroi, direção
if nova_posição[0] < 0
next
end
if nova_posição[1] < 0
next
end
if nova_posição[0] >= mapa.size
next
end
if nova_posição[1] >= mapa[0].size
next
end
if mapa[nova_posição[0]] [nova_posição[1]] == "X"
next
end
mapa[heroi[0]][heroi[1]] = " "
mapa[nova_posição[0]] [nova_posição[1]] = "H"
end
end
def inicia_fogefoge
nome = da_boas_vindas
joga nome
end
Já agradeço de antemão a qualquer um que queira tentar ajudar.
Obrigado pela atenção.