A função posicao_valida? funcionava anteriormente com o movimmento do heroi, mas quando implementei o movimento do fantasma ela parou de funcionar. Recebo o seguinte erro na linha ' valor_atual = mapa[posicao[0]][posicao[1]]' = in posicao_valida?': undefined method
[]' for nil:NilClass (NoMethodError). Não consigo entender o que esta nulo.
def posicao_valida? mapa, nova_posicao
posicao = nova_posicao
linhas = mapa.size
colunas = mapa[0].size
estourou_linhas = posicao[0] >= linhas || posicao[0] < 0
estourou_colunas = posicao[1] >= colunas || posicao[1] < 0
if estourou_colunas || estourou_colunas
return false
end
valor_atual = mapa[posicao[0]][posicao[1]]
if valor_atual == "X" || valor_atual == "F"
return false
end
true
end
def posicoes_validas_a_partir_de mapa, posicao
posicoes = []
baixo = [posicao[0] + 1, posicao[1]]
if posicao_valida? mapa, baixo
posicoes << baixo
end
cima = [posicao[0] - 1, posicao[1]]
if posicao_valida? mapa, cima
posicoes << cima
end
direita = [posicao[0], posicao[1] + 1]
if posicao_valida? mapa, direita
posicoes << direita
end
esquerda = [posicao[0], posicao[1] - 1]
if posicao_valida? mapa, esquerda
posicoes << esquerda
end
posicoes
end
def move_fantasma mapa, linha,coluna
posicoes = posicoes_validas_a_partir_de mapa, [linha, coluna]
return if posicoes.empty?
posicao = posicoes [0]
mapa[linha][coluna] = " "
mapa[posicao[0]][posicao[1]] = "F"
end