Bem, ao tentar mudar a posição do herói o "H" anterior não some do mapa, tinha uma questão no forum de uma pessoa com esse mesmo problema, porem a solução que ele conseguiu não funcionou no meu código.
segue pacman.rb
require_relative 'ui'
def le_mapa (numero)
arquivo = "mapa#{numero}.txt"
text = File.read arquivo
mapa = text.split "\n"
end
def encontre_o_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
end
def calcular_nova_posicao (heroi, direcao)
case direcao
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 mapa
direcao = pede_movimento
heroi = encontre_o_jogador mapa
nova_posicao = calcular_nova_posicao heroi, direcao
if nova_posicao[0] < 0
next
end
if nova_posicao[1] < 0
next
end
if nova_posicao[0] >= mapa.size
next
end
if nova_posicao[1] >= mapa[0].size
next
end
if mapa[nova_posicao[0]][nova_posicao[1]] == "X"
next
end
mapa[heroi[0]][heroi[1]] == " "
mapa[nova_posicao[0]][nova_posicao[1]] = "H"
end
end
def inicia_pacman
nome = dar_boas_vindas
joga nome
end
e segue o ui.rb
def dar_boas_vindas
puts "Bem vindo!"
puts "Qual seu nome?"
nome = gets.strip
puts "\n\n"
puts "Ok #{nome}, vamos começar a jogar!"
nome
end
def desenha_mapa (mapa)
puts mapa
end
def pede_movimento
puts "Que direção você quer ir?"
movimento = gets.strip
end