Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problemas com a variavél heroi, ela está assumindo o valor de [1,3]

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!

1 resposta
solução!
def calcula_nova_posicao(heroi, direcao)
    heroi = heroi.dup
    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

Acabei de ler no próprio curso! Foi mal Galera!