Olá quando eu executo meu códigi ele me exibe essas menssagens de erro :
Logica.rb:95: syntax error, unexpected ',', expecting ')' (SyntaxError) if ( posicaoValida? (mapa , baixo) )
Logica.rb:102: syntax error, unexpected ',', expecting ')' if (posicaoValida? ( mapa , cima ) )
/Logica.rb:106: syntax error, unexpected keyword_end, expecting end-of-input end
meu código :
Main.rb
require_relative 'Logica'
main()
Logica.rb
require_relative 'UI.rb'
def leMapa(numero)
arquivo = ("Mapa_#{numero}.txt")
texto = File.read (arquivo)
mapa = texto.split ("\n")
return mapa
end
def posicaoValida?(mapa , posicao)
quantidadeLinhas = mapa.size
quantidadeColuna = mapa[0].size
estourouLinhas = posicao[0] < 0 || posicao[0] == mapa.size
estourouColunas = posicao[1] < 0 || posicao[1] == mapa[0].size
if (estourouLinhas || estourouColunas)
return false
end
valorAtual = mapa [posicao[0]] [posicao[1]]
if (valorAtual == "X" || valorAtual == "F")
return false
end
return true
end
def encontraJogador(mapa)
caractereDoHeroi = "H"
mapa.each_with_index do | linhaAtual , linha |
linhaAtual = mapa[linha]
colunaDoHeroi = linhaAtual.index (caractereDoHeroi)
if (colunaDoHeroi != nil)
return [linha , colunaDoHeroi]
end
end
#NÃO ACHEI
end
def calculaNovaPosicao(heroi , direcao)
heroi = heroi.dup
movimentos = {
"W" => [ -1 , 0],
"S" => [+1 , 0],
"A" => [0 , -1],
"D" => [0 , +1]
}
posicao = movimentos[direcao]
#puts (posicao)
heroi[0] += posicao[0]
heroi[1] += posicao[1]
puts (heroi[0])
puts (heroi[1])
return heroi
end
def posicoesValidasPartindoDe( mapa , posicao )
posicoes = []
baixo = [posicao[0] + 1 , posicao[1] ]
if ( posicaoValida? (mapa , baixo) )
posicoes << baixo
end
cima = [posicao[0] - 1 , posicao[1] ]
if (posicaoValida? ( mapa , cima ) )
posicoes << cima
end
esquerda = [posicao[0] , posicao[1] - 1 ]
if (posicaoValida? ( mapa , esquerda ) )
posicoes << esquerda
end
direita = [posicao[0] , posicao[1] + 1 ]
if (posicaoValida? ( mapa , direita ) )
posicoes << direita
end
return posicoes
end
def movimentaFantasma(mapa , coluna , linhaAtual , caractereDoFantasma)
posicoes = posicaoesValidasPartindoDe( mapa , [linhaAtual , coluna] )
if (posicoes.empty?)
return
end
posicao = posicoes[0]
mapa [linhaAtual] [coluna] = " "
mapa [posicao[0]] [posicao[1]] = caractereDoFantasma
end
def moveFantasmas(mapa)
caractereDoFantasma = "F"
mapa.each_with_index do |conteudoLinha , linhaAtual |
conteudoLinha.chars.each_with_index do | caractereAtual , coluna |
achouFantasma = caractereAtual == caractereDoFantasma
if (achouFantasma)
movimentaFantasma(mapa , coluna , linhaAtual , caractereDoFantasma)
end
end
end
end
def joga(nomeUsuario)
mapa = leMapa(2)
while true
desenhaMapa(mapa)
direcao = pedeMovimento()
heroi = encontraJogador (mapa)
novaPosicao = calculaNovaPosicao(heroi , direcao)
if ( !posicaoValida?(mapa , novaPosicao ) )
next
end
mapa [heroi[0]] [heroi[1]] = " "
mapa[novaPosicao[0]] [novaPosicao[1]] = "H"
moveFantasmas(mapa)
end
end
def main()
nomeUsuario = daBoasVindas()
joga(nomeUsuario)
end
UI.rb
def daBoasVindas()
puts ("\n\n")
puts ("=====================================================================")
puts ("BEM VINDO AO FOGE-FOGE ")
puts ("=====================================================================")
puts ("\n\n\n")
puts ("=====================================================================")
puts ("QUAL É O SEU NOME : ")
puts ("=====================================================================")
nome = gets.strip
puts ("\n\n")
puts ("=====================================================================")
puts ("COMEÇAREMOS O JOGO PARA VOCÊ , #{nome.upcase}")
puts ("=====================================================================")
return nome
end
def desenhaMapa(mapa)
puts (mapa)
end
def pedeMovimento()
puts ("\n\n")
puts ("=====================================================================")
puts ("PARA ONDE VOCÊ DESEJA IR : ")
puts ("=====================================================================")
puts ("W = PARA CIMA ")
puts ("S = PARA BAIXO ")
puts ("D = PARA DIREITA ")
puts ("A = PARA ESQUERDA")
puts ("=====================================================================")
direcao = gets.strip.upcase
return direcao
end
Mapa_2.txt
XXXXXXXXX
X H X
X X XXX X
X X X X
X X X X
X X
XXX XX X
X X
X X X X
XXXF F X
XXX XXX X
XXX XXX X
XXX X
Alguem sabe como corrigir estés erros ?