Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

meu personagem n mexe

de acordo com o prompt, o erro está na linha 43 do arquivo Foge foge.rb, mas n sei oq é.

esse é o erro q aparece:

C:/Users/Computador/Desktop/programação/A projeto/joguinho/Foge-foge.rb:43:in `[]=': no implicit conversion from nil to integer (TypeError)
        from C:/Users/Computador/Desktop/programação/A projeto/joguinho/Foge-foge.rb:43:in `joga'
        from C:/Users/Computador/Desktop/programação/A projeto/joguinho/Foge-foge.rb:51:in `inicia_fogefoge'
        from main.rb:3:in `<main>'

ui.rb

require_relative "Foge-foge"
def da_boas_vindas
    puts "Bem vindo ao Foge-foge"
    puts "Qual é o seu nome?"
    nome = gets.strip
    puts "\n\n\n\n\n\n"
    puts "Começaremos o jogo para você, #{nome}"
    nome
end

def desenha(mapa)
    puts mapa
end

def pede_movimento
    puts "Para onde deseja ir?"
    movimento = gets.strip
end

main.rb

require_relative "Foge-foge"

inicia_fogefoge

Foge-foge.rb

require_relative 'ui'

def le_mapa(numero)
    arquivo = "mapa#{numero}.txt"
    texto = File.read(arquivo)
    mapa = texto.split("\n")
end

def encontra_jogador(mapa)
    caracter_do_heroi = "H"
    mapa.each_with_index do |linha_atual,linha|
        coluna_do_heroi = linha_atual.index caracter_do_heroi
        if coluna_do_heroi != -1
            return[linha,coluna_do_heroi]

        #achei linha e coluna
        end
    end
    # nao achei
end

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

def joga(nome)
    mapa = le_mapa(1)
    while true
        desenha mapa
        direcao = pede_movimento
        heroi = encontra_jogador mapa
        mapa[heroi[0]][heroi[1]] = " "
        nova_posicao = calcula_nova_posicao heroi, direcao
        mapa[nova_posicao[0]][nova_posicao[1]] = "H"
    end
end

def inicia_fogefoge
    nome = da_boas_vindas
    joga nome
end
2 respostas
solução!

Oi João, veja se essa discussão pode te ajudar => https://cursos.alura.com.br/forum/topico-erro-na-hora-de-movimentar-o-personagem-26811

MT OBRIGADO AJUDOU S, mas meu código só foi funcionar quando eu tirei o "!=-1" da função encontra jogador. porém lá no curso a função aparece com esse -1. funcionaria sem tirá-lo?