Olá, fiz o passo a passo. Na última etapa, o jogo abre após digitar ''>run'' no Tic80, e funciona normalmente caso eu movimente para a esquerda, direita ou para baixo.
No entanto, ao apertar para cima após colocar o comando ''>run'' , o jogo para de funcionar, retorna, e o Tic80 informa:
[string ''...'' ] :21:attempt to index a nil value (local 'ponto' )
stack traceback:
[string ''...'' ]:21: in function 'temColisaoComMapa''
[string ''...'' ] :40: in function 'movimento'
[string ''...'' ] :104: in function 'Tic'
EDITADO: [Solucionado]
Escrita com letras minúsculas e maiúsculas causaram o problema. Pode fechar o tópico.
superioresquerdo = {
x = jogador.x - 8,
y = jogador.y - 8 - 1
}
superiorDireito = {
x = jogador.x + 8,
y = jogador.y - 8 - 1
}
if temColisaoComMapa(superiorEsquerdo)
Segue abaixo os meus códigos:
-- title: The First Adventure
-- author: Breno C. Souza
-- desc: Our First Adventure!
-- script: lua
jogador = {
sprite = 32,
x = 120,
y = 68,
}
Consantes = {
LARGURA_DA_TELA = 240,
ALTURA_DA_TELA = 138,
}
function temColisaoComMapa(ponto)
blocoId = mget(ponto.x / 8, ponto.y / 8)
if blocoId >= 128 then
return true
else
return false
end
end
function movimento()
--CIMA
if btn(0) then
superioresquerdo = {
x = jogador.x - 8,
y = jogador.y - 8 - 1
}
superiorDireito = {
x = jogador.x + 8,
y = jogador.y - 8 - 1
}
if temColisaoComMapa(superiorEsquerdo) or
temColisaoComMapa(superiorDireito) then
-- colisao!!
else
jogador.y = jogador.y - 1
end
end
--BAIXO
if btn(1) then
jogador.y = jogador.y + 1
end
--DIREITO
if btn(2) then
jogador.x = jogador.x -1
end
--ESQUERDO
if btn(3) then
jogador.x = jogador.x +1
end
end
function desenhaMapa()
map(0, -- posicao x no mapa
0, -- posicao y no mapa
Consantes.LARGURA_DA_TELA, -- quanto desenhar x
Consantes.ALTURA_DA_TELA, -- quanto desebgar y
0, -- qual ponto colocar o x
0) -- em qual ponto colocar o y inicial
end
function desenhaJogador()
spr( jogador.sprite,
jogador.x - 8,
jogador.y - 8,
0, -- cor de fundo
1, -- escala
0, -- espalhar
0, -- rotacionar
2, -- quantos blocos para direita
2) -- quantos blocos para baixo
end
function desenho()
cls()
desenhaMapa()
desenhaJogador()
print(jogador.y)
blocoid = mget((jogador.x-8) / 8, (jogador.y-8) / 8)
if blocoid >= 128 then
print(blocoid, 0, 16)
end
end
function TIC()
movimento()
desenho()
end