Galera, vou mandar o debug aqui, do que está acontecendo comigo!
vn0q55n@m-c1mkh0rqdty4 ~/pessoal/curso_ruby/fogefoge (master) $ ruby main.rb
Bem vindo ao Foge-foge
Qual é o seu nome?
Felipe
Começaremos o jogo para vc, Felipe
From: /Users/vn0q55n/pessoal/curso_ruby/fogefoge/fogefoge.rb @ line 42 Object#joga:
38: def joga(nome)
39: mapa = le_mapa 1
40:
41: while true
=> 42: binding.pry
43: desenha(mapa)
44: direcao = pede_movimento
45: heroi = encontra_jogador mapa
46: nova_posicao = calcula_nova_posicao heroi, direcao
47:
48: # if mapa[nova_posicao[0]] [nova_posicao[1]] == "X"
49: # next
50: # end
51: mapa[heroi[0]][heroi[1]] = " "
52: mapa[nova_posicao[0]][nova_posicao[1]] = "H"
53: end
54: end
[1] pry(main)> desenha(mapa)
XXXXX
X H X
X X X
X X X
X X
X
XXX
X
X F X
XXXXX
=> nil
[2] pry(main)> direcao = pede_movimento
Para onde deseja ir?
D
=> "D"
[3] pry(main)> heroi = encontra_jogador mapa
=> [1, 2]
[4] pry(main)> heroi
=> [1, 2]
[5] pry(main)> heroi
=> [1, 2]
[6] pry(main)> nova_posicao = calcula_nova_posicao heroi, direcao
=> [1, 3]
[7] pry(main)> heroi
=> [1, 3]
[8] pry(main)> heroi
=> [1, 3]
[9] pry(main)> Como vcs podem ver, quando eu chamo o metodo nova_posicao ele esta jogando sujeira na minha variavel heroi
Aqui, vai meu método que calcula nova posição:
def calcula_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
Esse é o github com todo o código:
https://github.com/felipeqa/curso_ruby/tree/master/fogefoge
Se alguém já passou por isso!