Finish beta

This commit is contained in:
Andros Fenollosa 2016-11-06 10:15:31 +01:00
parent ca002ea116
commit 0e3f3965fb
4 changed files with 48 additions and 3 deletions

BIN
assets/sounds/ambient.wav Normal file

Binary file not shown.

BIN
assets/sounds/die.wav Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -3,7 +3,11 @@ function love.load()
game = {} game = {}
game.width = 800 game.width = 800
game.height = 480 game.height = 480
game.play = true
game.score = 0
game.time_restart = 2
love.window.setMode(game.width, game.height) love.window.setMode(game.width, game.height)
score = { x = 500, y = 40 }
-- Background -- Background
background = {} background = {}
background.img = love.graphics.newImage('assets/sprites/background.jpg') background.img = love.graphics.newImage('assets/sprites/background.jpg')
@ -33,7 +37,7 @@ function love.load()
asteroids = {} asteroids = {}
for i = 1, num_asteroids do for i = 1, num_asteroids do
asteroid = {} asteroid = {}
asteroid.img = love.graphics.newImage('assets/sprites/asteroid_1.png') asteroid.img = love.graphics.newImage('assets/sprites/asteroid_' .. tostring(math.random(1, 2)) .. '.png')
asteroid.x = game.width asteroid.x = game.width
asteroid.y = { asteroid.y = {
(game.height / 4) - (asteroid.img:getHeight() / 2), (game.height / 4) - (asteroid.img:getHeight() / 2),
@ -41,12 +45,31 @@ function love.load()
3 * (game.height / 4) - (asteroid.img:getHeight() / 2), 3 * (game.height / 4) - (asteroid.img:getHeight() / 2),
} }
asteroid.pos = 2 asteroid.pos = 2
asteroid.speed = 100 asteroid.speed = 800
asteroids[i] = asteroid asteroids[i] = asteroid
end end
-- Sounds
sounds = {}
sounds.die = love.audio.newSource('assets/sounds/die.wav', 'static')
sounds.ambient = love.audio.newSource('assets/sounds/ambient.wav')
sounds.ambient:play()
sounds.ambient:setLooping(true)
end end
local my_time_restart = 0
function love.update(dt) function love.update(dt)
if not game.play then
my_time_restart = my_time_restart + dt
if my_time_restart > game.time_restart then
game.play = true
game.score = 0
my_time_restart = 0
end
end
-- Score
if game.play then
game.score = game.score + dt * 100
end
-- Sprite spaceship -- Sprite spaceship
if spaceship.pos_frame ~= spaceship.num_frames then if spaceship.pos_frame ~= spaceship.num_frames then
spaceship.pos_frame = spaceship.pos_frame + 1 spaceship.pos_frame = spaceship.pos_frame + 1
@ -60,15 +83,30 @@ function love.update(dt)
asteroid.x = game.width + math.random(0, game.width) asteroid.x = game.width + math.random(0, game.width)
asteroid.pos = math.random(1, 3) asteroid.pos = math.random(1, 3)
end end
-- Colision
if checkCollision(spaceship.x + spaceship.img:getWidth() / spaceship.num_frames / 2, spaceship.y[spaceship.pos], spaceship.img:getWidth() / spaceship.num_frames / 2, spaceship.img:getHeight(), asteroid.x, asteroid.y[asteroid.pos], asteroid.img:getWidth(), asteroid.img:getHeight()) then
game.play = false
sounds.die:play()
end
end end
end end
function love.draw() function love.draw()
-- Background
love.graphics.draw(background.img, background.x, background.y) love.graphics.draw(background.img, background.x, background.y)
love.graphics.draw(spaceship.img, spaceship.frames[spaceship.pos_frame], spaceship.x, spaceship.y[spaceship.pos]) -- Spaceship
if game.play then
love.graphics.draw(spaceship.img, spaceship.frames[spaceship.pos_frame], spaceship.x, spaceship.y[spaceship.pos])
end
-- Asteroids
for key, asteroid in pairs(asteroids) do for key, asteroid in pairs(asteroids) do
love.graphics.draw(asteroid.img, asteroid.x, asteroid.y[asteroid.pos]) love.graphics.draw(asteroid.img, asteroid.x, asteroid.y[asteroid.pos])
end end
-- Score
love.graphics.print('Score: ' .. math.ceil(game.score), score.x , score.y)
if not game.play then
love.graphics.print('Game over', game.width / 2, game.height / 2)
end
end end
-- Controls -- Controls
@ -82,3 +120,10 @@ function love.keypressed(key, scancode, isrepeat)
spaceship.pos = spaceship.pos + 1 spaceship.pos = spaceship.pos + 1
end end
end end
function checkCollision(x1,y1,w1,h1, x2,y2,w2,h2)
return x1 < x2 + w2 and
x2 < x1 + w1 and
y1 < y2 + h2 and
y2 < y1 + h1
end