Tutorial Pong #4 - Animação do Jogo
Bom dia!!
Hoje vou mostrar como o jogo vai funcionar. A lógica dele é bem simples, vocês vão ver.
Primeiro vamos adicionar mais algumas variáveis e declarar mais algumas funções:
-- Variáveis local escala = 0.9 local variation = 0.05 local ballX = 0 local ballY = 0 local ballVar = 0.5 -- Fim do Jogo local fimJogo
local gameListeners = {}
local comecarJogo = {}
local update = {}
local moverRquete = {}
local fim = {}
Agora vamos deixar a função mostrarTelaJogo da seguinte forma:
function gameListeners( action )
if ( action == 'add' ) then
bg:addEventListener( 'touch', moverRaquete )
else
bg:removeEventListener( 'touch', moverRaquete )
Runtime:removeEventListener( 'enterFrame', update )
end
end
function comecarJogo()
bg:removeEventListener( 'tap', comecarJogo )
Runtime:addEventListener( 'enterFrame', update )
end
function hitTestObject( objeto1, objeto2 )
local esquerda = objeto1.contentBounds.xMin <= objeto2.contentBounds.xMin and objeto1.contentBounds.xMax >= objeto2.contentBounds.xMax
local direita = objeto1.contentBounds.xMin >= objeto2.contentBounds.xMin and objeto1.contentBounds.xMax <= objeto2.contentBounds.xMax
local cima = objeto1.contentBounds.yMin <= objeto2.contentBounds.yMin and objeto1.contentBounds.yMax >= objeto2.contentBounds.yMax
local baixo = objeto1.contentBounds.yMin >= objeto2.contentBounds.yMin and objeto1.contentBounds.yMax <= objeto2.contentBounds.yMax
return ( esquerda or direita ) and ( cima or baixo )
end
function update()
escala = escala - variation
ball.xScale = escala
ball.yScale = escala
-- Raising
if ( math.floor( ball.xScale * 10 ) >= 15 ) then
variation = 0.05
end
-- Missed
if ( math.floor( ball.xScale * 10 ) < 3 ) then
fim()
end
-- Movendo a bolinha
ball.x = ball.x - ballX
ball.y = ball.y - ballY
-- Falling and Hit with paddle
if ( math.floor( ball.xScale * 10 ) == 3 and hitTestObject( paddleTop, ball ) ) then
variation = -0.05
if ( ball.x < paddle.x + 50 ) then
ballX = ( math.random() * 0.5 ) + ballVar
end
if ( ball.x > paddle.x ) then
ballX = ( math.random() * -0.5 ) - ballVar
end
if ( ball.y < paddle.y + 75 ) then
ballY = ( math.random() * 0.5 ) + ballVar
end
if ( ball.y > paddle.y - 70 ) then
ballY = ( math.random() * -0.5 ) - ballVar
end
ballVar = ballVar + 0.025
end
end
function moverRaquete( e )
if ( e.phase == 'moved' ) then
paddle.x = e.x
paddle.y = e.y
end
end
function fim()
fim = display.newImage( 'alert.png', _W / 2, _H / 2 )
transition.to( fimJogo, { time = 300, xScale = 0.5, yScale = 0.5 } )
end
Bom, hoje foi um post relâmpago, só para tentar não perder este ritmo de postagens antes de acabar o tutorial.
Para quem tiver interesse, pode fazer o download do andamento do projeto aqui.

0 comentários: