def explode(self):
     """when destroyed"""
     self.explosion_time -= 1
     if self.explosion_time > 0:
         self.screen.blit(self.explosion_image, self.rect)
     else:
         GOL.del_go(self)
 def update(self):
     # while a solid bullet
     if not self.destroyed:
         # Move
         if self.dir == "UP":
             self.y -= self.speed
             self.rect.y = int(self.y)
         elif self.dir == "DOWN":
             self.y += self.speed
             self.rect.y = int(self.y)
         elif isinstance(self.dir, tuple):
             self.y += self.dir[0] * self.speed
             self.rect.y = int(self.y)
             self.x += self.dir[1] * self.speed
             self.rect.x = int(self.x)
         # Check if reach bottom or top
         if self.rect.top >= self.screen.get_rect().bottom:
             GOL.del_go(self)
         elif self.rect.bottom <= self.screen.get_rect().top:
             GOL.del_go(self)
         # Check if hit anything
         if isinstance(self.ship, Player):
             for alien in GOL.get_golist(Aliens):
                 if self.rect.colliderect(alien.rect):
                     if alien.spawned and not alien.destroyed:
                         alien.take_dmg(self.dmg)
                         self.destroyed = True
         elif isinstance(self.ship, Aliens):
             if GOL.get_go(Player):
                 if self.rect.colliderect(GOL.get_go(Player).rect):
                     GOL.get_go(Player).take_dmg(self.dmg)
                     self.destroyed = True
 def update(self):
     if self.spawned:
         Ships.update(self)
         if not self.destroyed:
             # Movement
             self.y += self.speed
             self.rect.y = int(self.y)
             # Fire
             self.fire()
             # Check if reached bottom
             if self.rect.top == self.screen.get_rect().bottom:
                 GOL.get_go(Base).take_dmg(self.hp)
                 GOL.del_go(self)
     else:
         if self.spawn_timer <= 0:
             self.spawned = True
         else:
             self.spawn_timer -= 1
 def update(self):
     # Sprite to draw selection.
     #1 -IF Destroyed check
     if self.destroyed == True:
         if self.expl_timer >= len(self.sprites_expl) * self.expl_time:
             self.sprite_index = 0
             self.sprite = self.sprites_expl[self.sprite_index]
         elif self.expl_timer < (len(self.sprites_expl) - 1 -
                                 self.sprite_index) * self.expl_time:
             self.sprite_index += 1
             self.sprite = self.sprites_expl[self.sprite_index]
         elif self.expl_timer <= 0:
             GOL.del_go(self)
         self.expl_timer -= 1
     #2 -If Alive dmg check
     elif self.hp <= self.max_hp * (len(self.sprites) - 1 -
                                    self.sprite_index) / len(self.sprites):
         self.sprite_index += 1
         self.sprite = self.sprites[self.sprite_index]
 def update(self):
     self.time -= 1
     if self.time <= 0:
         GOL.del_go(self)