Exemple #1
0
    def runobjects(self, objects):
        G, B, S = gfx, self.background, self.speedadjust
        gfx.updatestars(B, G)

        for effect in self.powereffects[:]:
            if effect.dead:
                effect.end()
                self.powereffects.remove(effect)
            else:
                effect.tick(S)

        #add pop for timedout powerups, sad place to do this, but owell
        for o in self.powerupobjs:
            if o.dead:
                self.popobjs.append(objpopshot.PopShot(o.rect.center))

        for l in objects:
            for o in l[:]:
                o.erase(B)
                o.tick(S)
                if o.dead:
                    o.erase(B)
                    l.remove(o)

        #HERE IS THE GLITTER
        #self.glitter.update(S)
        #self.glitter.add(self.shotobjs, 1.0)

        for l in objects:
            for o in l:
                o.draw(G)

        self.hud.draw()
    def check_collision_player_enemies(self):
        """
        Testa a colisao entre o jogador e os inimigos, ou seus tiros.
        """

        #Obtem o retangulo que envolve a aeronave do jogador, diminuindo
        #um pouco sua area para que a colisao seja mais realista.
        playerrect = self.player.rect.inflate(-3, -3)
        playercollide = playerrect.colliderect
        hitbullet = 0

        #Testa a colisao entre o jogador e os inimigos.
        if self.curwave:
            for wave in self.curwave:
                for s in wave.enemies:
                    if playercollide(s.rect):
                        s.dead = 1
                        self.changestate('playerdie')

        #Testa a colisao entre o jogador e tiros dos inimigos.
        for s in self.baddyshotobjs:
            r = s.rect
            if playercollide(r):
                s.dead = 1
                self.player.stamina -= s.dmg
                if self.player.stamina <= 0:
                    self.player.stamina = game.start_stamina
                    self.popobjs.append(objpopshot.PopShot(r.center))
                    self.changestate('playerdie')
                    hitbullet = 1
 def playerdie_start(self):
     #Adiciona um objeto de explosao da aeronave do jogador
     #e finaliza o mapa.
     self.player.lives -= 1
     snd.play('explode', 1.0, self.player.rect.centerx)
     self.popobjs.append(
         objpopshot.PopShot(self.player.rect.center, size='big'))
     self.player.dead = 1
     self.player.active = 0
     self.explodetick = 0
     self.map.cleanup()
Exemple #4
0
 def levelskip_start(self):
     snd.play('levelskip')
     game.player.skips += 1
     self.poptime = 2
     if game.clock.get_fps() < 25:
         self.poptime = 1
     if game.comments >= 1:
         self.textobjs.append(objtext.Text('Level Skipped'))
     self.skiptime = 25
     for s in self.spikeobjs:
         s.dead = 1
         self.popobjs.append(objpopshot.PopShot(s.rect.center))
Exemple #5
0
def superexplode(pos, move):
    sprites = []
    sprites.append(Explode(pos, move))
    for d in range(len(debris)):
        sprites.append(Debris(d, pos, move))
    for _ in range(4):
        newpos = list(pos)
        newpos[0] += (random.random() - .5) * 30
        newpos[1] += (random.random() - .5) * 30
        pop = objpopshot.PopShot(newpos)
        sprites.append(pop)

    return sprites
Exemple #6
0
 def levelend_tick(self):
     self.poptime -= 1
     if not self.poptime:
         self.poptime = 2
         if self.shotobjs:
             s = self.shotobjs[0]
             s.dead = 1
             self.popobjs.append(objpopshot.PopShot(s.rect.center))
     if not self.popobjs and not self.shotobjs and not self.popobjs:
         if self.levelnum + 1 >= levels.maxlevels():
             self.gamewin()
         else:
             self.changestate('levelstart')
     self.runobjects(self.objlists)
Exemple #7
0
 def levelend_start(self):
     snd.play('levelfinish')
     self.popobjs.append(objwarp.Warp(self.player.rect.center))
     self.player.dead = 1
     self.player.active = 0
     self.poptime = 2
     for effect in self.powereffects:
         effect.dead = 1
     if game.comments >= 1 and self.grabbedboxes >= 25:
         self.textobjs.append(objtext.Text(game.Complements[self.complement]))
         self.complement = (self.complement + 1) % len(game.Complements)
     for s in self.spikeobjs:
         s.dead = 1
         self.popobjs.append(objpopshot.PopShot(s.rect.center))
     #boxes may be left if the player cheated
     for b in self.boxobjs:
         b.erase(self.background)
     del self.boxobjs[:]
Exemple #8
0
 def playerdie_tick(self):
     self.poptime -= 1
     if not self.poptime:
         self.poptime = 2
         if self.shotobjs:
             s = self.shotobjs[0]
             s.dead = 1
             self.popobjs.append(objpopshot.PopShot(s.rect.center))
     if self.explode.dead and not self.popobjs :#and not game.timeleft:
         if self.lives_left:
             self.lives_left -= 1
             self.hud.drawlives(self.lives_left)
             self.changestate('playerstart')
             if game.comments >= 2 and not self.lives_left:
                 self.textobjs.append(objtext.Text("Last Ship, Don't Blow It"))
         else:
             self.changestate('gameover')
     self.tickleveltime(self.speedadjust * 1.5)
     self.runobjects(self.objlists)
    def check_collision_enemies_player(self):
        """
        Testa a colisao entre os inimigos e os tiros do jogador.
        """

        for s in self.playershotobjs:
            r = s.rect
            if self.curwave:
                for wave in self.curwave:
                    for baddy in wave.enemies:
                        baddyrect = baddy.rect.inflate(-3, -3)
                        baddycollide = baddyrect.colliderect
                        if baddycollide(r):
                            self.player.score += 30
                            s.dead = 1
                            baddy.stamina -= s.dmg
                            if baddy.stamina <= 0:
                                baddy.dead = 1
                                self.popobjs.append(
                                    objpopshot.PopShot(r.center,
                                                       size=baddy.size))
 def start(self):
     snd.play('whip')
     for s in self.state.shotobjs:
         s.dead = 1
         self.state.popobjs.append(objpopshot.PopShot(s.rect.center))
Exemple #11
0
    def normal_tick(self):
        #fire the guards
        shootchance = game.guard_fire * self.speedadjust
        if self.player.active and random.random() < shootchance:
            self.powerupcount += 0.3
            baddy = random.choice(self.guardobjs)
            baddy.fire()  #only requests a shot
        for baddy in self.guardobjs:
            shotspot, shotdir = baddy.shotinfo()
            if shotspot:
                s = objshot.Shot(shotspot, shotdir)
                self.shotobjs.append(s)
                snd.play('shoot', 1.0, shotspot[0])

        #add a powerup if ready
        if self.powerupcount >= game.powerupwait:
            self.powerupcount = 0.0
            p = objpowerup.newpowerup(self.levelnum)
            self.powerupobjs.append(p)
            snd.play('spring', 0.6)
            gamehelp.help("powerup", p.rect.topleft)
        if self.grabbedboxes >= 50:
            self.grabbedboxes = 0
            if game.comments >= 1:
                self.textobjs.append(
                    objtext.Text(game.Complements[self.complement]))
            self.complement = int(
                (self.complement + 1) % len(game.Complements))
        elif self.grabbedboxes >= 20:
            self.numdeaths = 0

        self.tickleveltime(self.speedadjust)

        playerrect = self.player.rect.inflate(-1, -1)
        playercollide = playerrect.colliderect
        #collide player to boxes
        if self.touchingsecretspike:
            if not playercollide(self.touchingsecretspike.rect):
                #self.boxobjs.remove(self.touchingsecretspike)
                self.spikeobjs.append(
                    objbox.Spike(self.touchingsecretspike.rect.topleft))
                self.boxobjs.remove(self.touchingsecretspike)
                self.touchingsecretspike = None
        for b in self.boxobjs:
            status = b.playercollide(playerrect)
            if status:
                self.grabbedboxes += 1
                self.powerupcount += 0.6
                if b in self.secretspikes:
                    self.touchingsecretspike = b
                    self.secretspikes.remove(b)
                    snd.play('klank2', 0.7, self.player.rect.centerx)
                elif status == 1:
                    self.powerupcount += 0.3
                    self.boxobjs.remove(b)
                    self.popobjs.append(b)
        #collide player to powerups
        for p in self.powerupobjs:
            if playercollide(p.rect):
                p.dead = 1
                effect = p.effect()
                if game.comments >= 2:
                    self.textobjs.append(
                        objtext.Text('"' + effect.__doc__ + '"'))
                self.powereffects.append(effect)
                gamehelp.help(effect.__doc__, self.player.rect.center)
        playerrect = playerrect.inflate(-6, -6)
        playercollide = playerrect.colliderect
        asteroidrects = [o.colliderect for o in self.asteroidobjs]
        hitbullet = 0
        #collide player and asteroids to bullets
        for s in self.shotobjs:
            r = s.rect
            if playercollide(r):
                s.dead = 1
                if not self.player.shield:
                    self.changestate('playerdie')
                    hitbullet = 1
                else:
                    self.popobjs.append(objpopshot.PopShot(s.rect.center))
            for ar in asteroidrects:
                if ar.colliderect(r) and not s.dead:
                    s.dead = 1
                    self.popobjs.append(objpopshot.PopShot(s.rect.center))
                    break
        #collide player to spikes
        for s in self.spikeobjs:
            if s.armed and playercollide(s.rect):
                s.dead = 1
                self.changestate('playerdie')
                hitbullet = 1
        #collide player to asteroids
        if not hitbullet:
            for a, r in zip(self.asteroidobjs, asteroidrects):
                if playercollide(r):
                    self.changestate('playerdie')
                    a.dead = 1
                    self.popobjs.append(objpopshot.PopShot(r.center))

        if not self.boxobjs:
            self.changestate('levelend')

        #blow smoke (turbo)
        self.clocks += 1
        if self.player.turbo and (self.player.move[0] or self.player.move[1]
                                  ) and gfx.surface.get_bytesize() > 1:
            self.smokeobjs.append(objsmoke.Smoke(self.player.rect.center))
            if game.clock.get_fps() > 35.0:
                self.smokeobjs.append(objsmoke.Smoke(self.player.rect.center))

        self.runobjects(self.objlists)