1 - não foi tão simples, briguei muito com o alinhamento de sprite mas basicamente minha dificuldade foi só isso mesmo, o que foi bom pois me fez escrever varias vezes o mesmo trecho. fiz, refiz, comparei com o do professor linha por linha e não ia. possivelmente fiz algo errado. mas deu certo. não sei se outros terão mesmo problema. não sei se ouve atualização no programa. sei que em dado ponto os números não batiam. certas ( ) não rodavam igual ao do professor. mas eu consegui.
OBS se a indentação tiver esquisita e por conta do tic-80 eu achei horroroso escreve com letras pixeladas e pequenas com Tabs mínimos. o que parece gigantesco aqui la e bem legível. hehehe
O programa é ótimo para aprender, bom mesmo na hora de roda se tiver erro ele mostra bem onde é, ou o que é o erro, mas cansativo de fica olhando muito tempo. Em tela cheia achei pior.
os números da distancia dos eixos são bem diferentes parece ate maluco mas deu certo aqui.
-- title: Fuga das sombras
-- author: Jeferson Silva
-- desc: short description
-- script: lua
jogador = {
sprite = 32,
x = 120-8,
y = 68-8
}
Constantes = {
LARGURA_DA_TELA = 240,
ALTURA_DA_TELA = 138
}
function temColisaoComMapa(ponto)
blocoX = ponto.x / 8
blocoY = ponto.y / 8
blocoId = mget(blocoX, blocoY)
if blocoId >= 128 then
return true
else
return false
end
end
function tentaMoverPara(meuDeslocamentoX, meuDeslocamentoY)
-- botao pra cima --
superiorEsquerdo = {
x = jogador.x + 1 + meuDeslocamentoX,
y = jogador.y - 0 + meuDeslocamentoY
}
superiorDireito = {
x = jogador.x + 15 + meuDeslocamentoX,
y = jogador.y - 0 + meuDeslocamentoY
}
-- fecha --
-- botao pra baixo --
inferiorDireito = {
x = jogador.x + 1 + meuDeslocamentoX,
y = jogador.y + 15 + meuDeslocamentoY
}
inferiorEsquerdo = {
x = jogador.x + 15 + meuDeslocamentoX,
y = jogador.y + 15 + meuDeslocamentoY
}
-- fecha ---
if temColisaoComMapa(superiorEsquerdo) or
temColisaoComMapa(superiorDireito) or
temColisaoComMapa(inferiorDireito) or
temColisaoComMapa(inferiorEsquerdo) then
--colisao!!
else
jogador.y = jogador.y + meuDeslocamentoY
jogador.x = jogador.x + meuDeslocamentoX
end
end
function atualiza()
-- cima
if btn(0) then
tentaMoverPara(0, -1)
end
-- baixo
if btn(1) then
tentaMoverPara(0, 1)
end
-- esquerda
if btn(2) then
tentaMoverPara(-1, 0)
end
-- direita
if btn(3) then
tentaMoverPara(1, 0)
end
end
function desenhaMapa()
map(0, -- posicao x no mapa
0, -- posicao y no mapa
Constantes.LARGURA_DA_TELA,
Constantes.ALTURA_DA_TELA,
0, -- em qual ponto colocar o x
0) -- em qual ponto colocar o y
end
function desenhaJogador()
spr(jogador.sprite,
jogador.x,
jogador.y,
0, -- Cor de fundo
1, -- escala
0, -- espelhar
0, -- rotacionar
2, -- quantos blocos pra direita
2) -- quantos blocos pra baixo
end
function desenha()
cls() --limpa tela
desenhaMapa()
desenhaJogador()
end
function TIC()
atualiza()
desenha()
end