Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- love.graphics.setDefaultFilter('nearest', 'nearest')
- enemy = {}
- enemies_controller = {}
- enemies_controller.enemies = {}
- enemies_controller.image = love.graphics.newImage('enemy.png')
- enemies_controller.waveTime = 0
- enemies_controller.wonWaves = 0
- function checkCollisions(enemies, bullets)
- for i,e in ipairs(enemies) do
- for _,b in pairs(bullets) do
- if b.y <= e.y + e.height and
- b.x > e.x and
- b.x < e.x + e.width then
- table.remove(enemies, i)
- table.remove(bullets, i)
- end
- end
- end
- end
- function love.load()
- background_music = love.audio.newSource('music2.mp3')
- love.audio.play(background_music)
- background_music:setVolume(0.2)
- victory_music = love.audio.newSource('victory.wav')
- victory_music:setVolume(0.3)
- victory_music:setLooping(false)
- defeat_music = love.audio.newSource('defeat.wav')
- defeat_music:setVolume(0.3)
- defeat_music:setLooping(false)
- game_over = false
- background_image = love.graphics.newImage('background2.png')
- player = {}
- player.x = 0
- player.y = 108
- player.bullets = {}
- player.cooldown = 18
- player.speed = 2
- player.image = love.graphics.newImage('spaceship.png')
- player.fire_sound = love.audio.newSource('laser.wav')
- player.fire = function()
- if player.cooldown <= 0 then
- love.audio.play(player.fire_sound)
- player.cooldown = 18
- bullet = {}
- bullet.x = player.x + 4
- bullet.y = player.y - 1
- table.insert(player.bullets, bullet)
- end
- end
- end
- function enemies_controller:spawnEnemy(x, y)
- enemy = {}
- enemy.x = x
- enemy.y = y
- enemy.width = 10
- enemy.height = 10
- enemy.bullets = {}
- enemy.cooldown = 2
- enemy.speed = .1
- table.insert(self.enemies, enemy)
- end
- function enemies_controller:spawnWave()
- for i=0, 10 do
- enemies_controller:spawnEnemy(i * 15, 0)
- end
- end
- function enemy:fire()
- if self.cooldown <= 0 then
- self.cooldown = 20
- bullet = {}
- bullet.x = self.x + 35
- bullet.y = self.y
- table.insert(self.bullets, bullet)
- end
- end
- function love.update(dt)
- player.cooldown = player.cooldown - 1
- if love.keyboard.isDown("right") or love.keyboard.isDown("d") then
- player.x = player.x + player.speed
- elseif love.keyboard.isDown("left") or love.keyboard.isDown("a") then
- player.x = player.x - player.speed
- end
- if love.keyboard.isDown("space") then
- player.fire()
- end
- if enemies_controller.wonWaves == 100 then
- -- we win!
- game_win = true
- end
- for _,e in pairs(enemies_controller.enemies) do
- if e.y >= love.graphics.getHeight()/5 then
- game_over = true
- end
- e.y = e.y + 1 * e.speed
- end
- if enemies_controller.waveTime <= 0 then
- enemies_controller:spawnWave()
- enemies_controller.waveTime = 5
- enemies_controller.wonWaves = enemies_controller.wonWaves + 1
- else
- enemies_controller.waveTime = enemies_controller.waveTime - dt
- end
- for i,b in ipairs(player.bullets) do
- if b.y < -10 then
- table.remove(player.bullets, i)
- end
- b.y = b.y - 3
- checkCollisions(enemies_controller.enemies, player.bullets)
- end
- end
- function love.draw()
- love.graphics.setColor(255,255,255)
- love.graphics.draw(background_image, 0,0,0,1.25)
- love.graphics.scale(5)
- if game_over then
- love.graphics.print("Game Over!", 45, 45)
- background_music:stop()
- defeat_music:play()
- return
- elseif game_win then
- love.graphics.print("Victory!", 55, 45)
- background_music:stop()
- victory_music:play()
- end
- -- draw the players image specified in player.image
- love.graphics.setColor(255, 255, 255)
- love.graphics.draw(player.image, player.x, player.y, 0)
- -- draw enemies image specified in enemies_controller.image
- for _,e in pairs(enemies_controller.enemies) do
- love.graphics.draw(enemies_controller.image, e.x, e.y, 0)
- end
- -- draw bullets
- love.graphics.setColor(255, 0, 0)
- for _,b in pairs(player.bullets) do
- love.graphics.rectangle("fill", b.x, b.y, 2, 2)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement