-- title: Fuguinha
-- author: Pica das galaxias
-- desc: Rpgzin de leve
-- script: lua
jogador = {
sprite = 260,
x = 120,
y = 68,
quadrodeanimacao = 1
}
constantes = {
Largura_mapa =240,
Altura_mapa =138
}
objetos = {}
direcao = {
{deltaX = 0,deltaY = -1},--CIMA
{deltaX = 0,deltaY = 1},--BAIXO
{deltaX = -1,deltaY = 0},--ESQUERDA
{deltaX = 1,deltaY = 0}--DIREITA
}
function colisao(ponto)
blocoid = mget((ponto.x)/8,(ponto.y-1)/8)
if blocoid >=128 then
return true
else
return false
end
end
function mover(direcao)
superioresquerdo = {
x = jogador.x + direcao.deltaX,
y = jogador.y + direcao.deltaY
}
superiordireito = {
x = jogador.x+14+ direcao.deltaX,
y = jogador.y+ direcao.deltaY
}
inferioresquerdo = {
x = jogador.x+direcao.deltaX,
y = jogador.y+14+direcao.deltaY
}
inferiordireito = {
x = jogador.x+14+direcao.deltaX,
y = jogador.y+14+direcao.deltaY
}
if colisao(superioresquerdo) or
colisao(superiordireito) or
colisao(inferiordireito) or
colisao(inferioresquerdo) then
--Colisao!!
else
jogador.quadrodeanimacao = jogador.quadrodeanimacao+0.1
if jogador.quadrodeanimacao >=3 then
jogador.quadrodeanimacao = 1
end
jogador.x = jogador.x+direcao.deltaX
jogador.y = jogador.y+direcao.deltaY
end
end
animacao = {
{256,258},
{260,262}, --primeiro e segundo quadro da anim
{264,266},
{268,270},
}
function movimento()
for tecla = 0,3 do
if btn(tecla) then
jogador.sprite = animacao[tecla+1][math.floor(jogador.quadrodeanimacao)]
mover(direcao[tecla+1])
end
end
end-- fim do movimento()
function desenhomapa()
cls()
map(0,--posicao x no mapa
0,--posicao y no mapa
constantes.Largura_mapa,--largura do desenho
constantes.Altura_mapa,--altura do desenho
0,--qual ponto colocar x inicial
0)--qual ponto colocar y inicial
end--fim do desenho do mapa
function desenhopersonagem()
spr(jogador.sprite,
jogador.x,
jogador.y,
6,--cor de fundo
1,--escala
0,--espelhar
0,--rotacionar
2,--quantos blocos para direita
2)--quantos blocos para para baixo
end--fim do desenho do personagem.
function desenhaobjetos()
for indice, objetos in pairs(objetos) do
spr(objetos.sprite,
objetos.x*8,
objetos.y*8,
objetos.cordefundo,
1,
0,
0,
2,
2)
end
end
function desenho()
desenhomapa()
desenhopersonagem()
desenhaobjetos()
end--fim do desenho
function temcolisao(A,B)
local cimaDeA = A.y
local direitaDeA = A.x + 16
local esquerdaDeA = A.x
local baixoDeA = A.y + 16
local cimaDeB = B.y
local direitaDeB = B.x +16
local esquerdaDeB = B.x
local baixoDeB = B.y + 16
if cimaDeA > baixoDeB or
direitaDeA < esquerdaDeB or
esquerdaDeA > direitaDeB or
baixoDeA < cimaDeB then
return false
end
return true
end
function verificacolisao()
for indice,objetos in pairs(objetos) do
if temcolisao(jogador,objetos)then
fazcolisao(indice)
else
end
end
end
function fazcolisao(indice)
table.remove ( objetos,indice)
end
function TIC()
movimento()
verificacolisao()
desenho()
end
function criachave(x,y)
local chave = {
sprite = 364,
x = x,
y = y,
cordefundo = 6
}
return chave
end
function inicializa()
local chave = criachave(5,12)
table.insert(objetos,chave)
end
inicializa()