예제 #1
0
 def update(self):
     if not self.objective:
         # E' morto l'obiettivo
         self.rect = self.rect.move(-K_ENEMY_MOV, 0)
         if self.rect.right < -5:
             self.kill()
     if self.rect.centerx > K_WINDOW_DIM[0] - 60:
         # Deve entrare nella finestra
         self.rect = self.rect.move(-K_ENEMY_MOV, 0)
     elif self.cooldown:
         # Attende
         self.cooldown -= 1
     else:
         # Si muove o spara
         if self.rect.centery - 30 < self.objective < self.rect.centery + 30:
             # Spara
             bull = elements.v_bullet((253,253,0),
                                      (self.rect.left, self.rect.centery),
                                      (-1,0),
                                      0.3)
             en_bullets.add(bull)
             self.cooldown = int(K_COOLDOWN * 15 / math.log(game_m.get_level()+1)) + random.randint(10, 200)
             p = game_m.get_random_player()
             if p:
                 self.objective = p.rect.centery
         else:
             if self.rect.centery < self.objective:
                 self.rect = self.rect.move(0, K_ENEMY_MOV)
             else:
                 self.rect = self.rect.move(0, -K_ENEMY_MOV)
예제 #2
0
 def update(self):
     if not self.cooldown:
         if self.active:
             self.ammo -= 1
             self.cooldown = K_COOLDOWN * 10
             x = elements.v_bullet(
                 ((random.randint(1, 255)), (random.randint(1, 255)), (random.randint(1, 255))),
                 (self.father.rect.topright),
                 self.direction,
                 father=self.father,
             )
             snd_master.play("beam")
             bullets.add(x)
             if not self.ammo:
                 game_master.game_m.set_base_weapon(self.father)
                 self.kill()
     else:
         self.cooldown -= 1