1
resposta

Como a 'classe heroi' recebe a posição dele no mapa

Pessoal, terminei a aula 4 agora, tudo funcionando até aqui perfeitamente. Mas fiquei com uma dúvida sobre o conteúdo:

Criamos o heroi.rb pra definição da classe, assim como os comportamentos dele lá dentro. Mas não entendi muito bem de onde que esse arquivo acessa a posição do heroi no mapa pra executar os métodos.

Em outras palavras, nesse trecho do código:

    def calcula_nova_pos(direcao)
        novo_heroi = dup
        movimentos = {
            "W" => [-1, 0],
            "S" => [+1, 0],
            "A" => [0, -1],
            "D" => [0, +1],
        }
        movimento = movimentos[direcao]
        novo_heroi.linha += movimento[0]
        novo_heroi.coluna += movimento[1]
        novo_heroi
    end

De onde vem a informação da linha e coluna atual desse heroi?

1 resposta

Oi Diogo, tudo bem? Alguma coisa está faltando nesse trecho de código, o heroi não está ai, no código original, o dup é feito a partir do heroi para que se crie o novo heroi.

Como não tenho a estrutura do seu código completo para entender melhor, suspeiro que o heroi esteja em um contexto global e por isso você consiga acessar ele de qualquer lugar, o que é perigoso. Por isso, o código final dessa parte da aplicação, recebe o heroi como parametro:

def calcula_nova_posicao(heroi, direcao)
    heroi = heroi.dup
    movimentos = {
        "W" => [-1, 0],
        "S" => [+1, 0],
        "A" => [0, -1],
        "D" => [0, +1]
        }
    movimento = movimentos[direcao]
    heroi.linha += movimento[0]
    heroi.coluna += movimento[1]
    heroi
end