Exemple #1
0
    def normal_tick(self):
        # fire the guards
        shootchance = game.guard_fire * self.speedadjust
        randchance = random.random()
        self.powerupcount += randchance * self.speedadjust * (self.levelnum / 300.0)
        if self.player.active and randchance < shootchance:
            self.powerupcount += 0.1
            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 >= 30:
            self.grabbedboxes = 0
            if game.comments >= 1:
                self.textobjs.append(objtext.Text(game.Complements[self.complement]))
            self.complement = (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)
Exemple #2
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)
Exemple #3
0
    def normal_tick(self):

        self.wavetick += 1

        # Sem inimigos, fim do nivel.
        if self.waves == 0:
            self.changestate("levelend")

        # Atualiza os inimigos.
        for wave in self.curwave:
            if wave.dead():
                self.waves -= 1
                self.curwave.remove(wave)

        # Cria mais uma wave de inimigo e atualiza
        # a lista de inimigos atuais.
        if self.wavetick > game.wavetime:
            wave, init_pos = levels.make()
            if wave <> None:
                wave.start(init_pos)
                self.curwave.append(wave)
            self.wavetick = 0
            # Atualiza a data de criacao de um wave
            self.lastwavecreated = game.clockticks

        # Verifica a entrada do jogador e atualiza sua posicao
        self.check_keys_state()
        self.pos = self.player.rect.center

        # Adiciona um powerup caso seja hora.
        self.powerupcount += 0.3
        if self.powerupcount >= game.poweruptime and random.randint(0, 2000) in range(600, 700):
            self.powerupcount = 0.0
            p = objpowerup.newpowerup(self.levelnum)
            self.powerupobjs.append(p)
            snd.play("spring", 0.6)

        #
        # Acoes do jogador/maquina
        #

        # Verifica se um dos inimigos atirou.
        # Caso tenha atirado, adiciona a lista de tiros dos inimigos.
        if self.curwave:
            for wave in self.curwave:
                for baddy in wave.enemies:
                    baddy.think()
                    shots = baddy.shotinfo()
                    if shots:
                        self.baddyshotobjs.extend(shots)

        # Verifica se o jogador atirou.
        # Caso tenha, adiciona a lista de tiros do jogador.
        shots = self.player.shotinfo()
        if shots:
            self.playershotobjs.extend(shots)
            snd.play(self.player.gun.sound, 1.0)

        #
        # Testa colisao entre jogador e inimigos
        #

        self.check_collision_player_powerups()
        self.check_collision_player_enemies()
        self.check_collision_enemies_player()

        # Atualiza a lista de objetos do jogo.
        self.runobjects(self.objlists)
    def normal_tick(self):

        self.wavetick += 1

        #Sem inimigos, fim do nivel.
        if self.waves == 0:
            self.changestate('levelend')

        #Atualiza os inimigos.
        for wave in self.curwave:
            if wave.dead():
                self.waves -= 1
                self.curwave.remove(wave)

        #Cria mais uma wave de inimigo e atualiza
        #a lista de inimigos atuais.
        if self.wavetick > game.wavetime:
            wave, init_pos = levels.make()
            if wave <> None:
                wave.start(init_pos)
                self.curwave.append(wave)
            self.wavetick = 0
            #Atualiza a data de criacao de um wave
            self.lastwavecreated = game.clockticks

        #Verifica a entrada do jogador e atualiza sua posicao
        self.check_keys_state()
        self.pos = self.player.rect.center

        #Adiciona um powerup caso seja hora.
        self.powerupcount += 0.3
        if self.powerupcount >= game.poweruptime and random.randint(
                0, 2000) in range(600, 700):
            self.powerupcount = 0.0
            p = objpowerup.newpowerup(self.levelnum)
            self.powerupobjs.append(p)
            snd.play('spring', 0.6)

        #
        # Acoes do jogador/maquina
        #

        #Verifica se um dos inimigos atirou.
        #Caso tenha atirado, adiciona a lista de tiros dos inimigos.
        if self.curwave:
            for wave in self.curwave:
                for baddy in wave.enemies:
                    baddy.think()
                    shots = baddy.shotinfo()
                    if shots:
                        self.baddyshotobjs.extend(shots)

        #Verifica se o jogador atirou.
        #Caso tenha, adiciona a lista de tiros do jogador.
        shots = self.player.shotinfo()
        if shots:
            self.playershotobjs.extend(shots)
            snd.play(self.player.gun.sound, 1.0)

        #
        # Testa colisao entre jogador e inimigos
        #

        self.check_collision_player_powerups()
        self.check_collision_player_enemies()
        self.check_collision_enemies_player()

        #Atualiza a lista de objetos do jogo.
        self.runobjects(self.objlists)