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)
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)
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)