Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Cosmos = class()
- -- wrote by juaxix
- -- videojuegos.ser3d.es
- function Cosmos:init()
- self.asteroids = {}
- self.loots = {}
- self.aliens = {}
- self.ship = Ship()
- self.stars = Stars()
- self.explosions= {}
- self.ship.position = vec2(WIDTH/2,HEIGHT/2)
- self.maxAsteroids = 6
- self.nasteroids = 0
- self.AspawnSpeed = 1/11
- self.timeNextAst = 0
- self.maxAliens = 3
- self.naliens = 0
- self.alSpawnSpeed = 1/60
- self.timeNextAlien= 3
- self.maxLoots = 3
- self.timeNextLoot = 0
- self.nloots = 0
- self.loSpawnSpeed = 1/66
- end
- function Cosmos:generateNextLoot()
- self.timeNextLoot = self.timeNextLoot - self.loSpawnSpeed
- if self.timeNextLoot<= 0 then
- self.timeNextLoot = 9
- if self.nloots < self.maxLoots then
- table.insert(self.loots,Loot(self.ship.position.y))
- self.nloots = self.nloots + 1
- end
- end
- end
- function Cosmos:generateNextAlien()
- self.timeNextAlien = self.timeNextAlien - self.alSpawnSpeed
- if self.timeNextAlien<= 0 then
- self.timeNextAlien = 11
- if self.naliens < self.maxAliens then
- table.insert(self.aliens,Alien(self.ship.position.y))
- self.naliens = self.naliens + 1
- end
- end
- end
- function Cosmos:generateNextAsteroid()
- self.timeNextAst = self.timeNextAst - self.AspawnSpeed
- if self.timeNextAst<= 0 then
- self.timeNextAst = 6
- if self.nasteroids < self.maxAsteroids then
- table.insert(self.asteroids,Asteroid(self.ship.position))
- self.nasteroids = self.nasteroids + 1
- end
- end
- end
- function Cosmos:draw()
- self:generateNextAsteroid()
- self:generateNextAlien()
- self:generateNextLoot()
- self.stars:draw()
- for i,a in ipairs(self.asteroids) do
- a:draw()
- end
- if self.ship:isDead() then
- self.ship:drawDead()
- drawText("Game over! ",2,1,50,HEIGHT/2)
- drawText("Hit restart! ",1,1,55,(HEIGHT/2)-33)
- else
- self.ship:draw()
- end
- for i,a in ipairs(self.aliens) do
- if a.position.x> WIDTH then
- table.remove(self.aliens, i)
- self.naliens = self.naliens - 1
- else
- a:draw()
- end
- end
- for i,l in ipairs(self.loots) do
- l:draw()
- end
- for i,e in ipairs(self.explosions) do
- if e:isDone() then
- table.remove(self.explosions, i)
- else
- e:draw()
- end
- end
- end
- function Cosmos:isCollidingWithAliens(o,min,attack)
- for i,a in ipairs(self.aliens) do
- if a.position:dist(o.position)<min then
- if attack then
- table.insert(self.explosions,Explosion(a.position,o.acolor,a.points))
- table.remove(self.aliens, i)
- self.naliens = self.naliens - 1
- score = score + a.points
- end
- return true
- end
- end
- return false
- end
- -- O(n)
- function Cosmos:isCollidingWithAsteroids(o,min,attack)
- -- asteroid
- for i,a in ipairs(self.asteroids) do
- if (a.position:dist(o.position))<min then
- if attack then
- table.insert(self.explosions,Explosion(a.position,o.acolor,a.points))
- table.remove(self.asteroids, i)
- self.nasteroids = self.nasteroids - 1
- score = score + a.points
- end
- return true
- end
- end
- end
- function Cosmos:touched(touch)
- self.ship:touched(touch)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement