def update(self): """update - Update internal data for a game tick""" BaseSprite.update(self) #this stops the guy completely #for frictionless physics like in a space game #you can decrement the velocity or even #delete these lines for asteroids-like physics if not self._accelerating: self.velocity_x = 0 self.velocity_y = 0 #manage the exploding animation if self.exploding: #do an explosion image for each tick self.explodestage += 1 e = self.explodestage if e < 8:#there are 7 explosion images e = str(e) img_name = python_nameconfig.guy_explode_stage + e + ".png" self.master_image = pygame.image.load(img_name) self._update_image() else:#explosion is done self.visible = False self.exploding = False self.kill() self.master_image = pygame.image.load(python_nameconfig.guy_img) self._update_image()
def update(self): """update - update internal data and position. Typically called by the game controller each game tick. """ BaseSprite.update(self) if self.exploding: #do an explosion image for each tick self.explode_stage += 1 e = self.explode_stage if e < 8: e = str(e) img_name = python_nameconfig.enemy_explode_stage + e + ".png" self.master_image = pygame.image.load(img_name) self._update_image() return else:#explosion is done self.visible = False self.exploding = False self.kill() return self.targetted = False #calculate target angle targx = self.target.x - self.x targy = self.target.y - self.y target_angle = ((math.atan2(targy,targx)) * 180)/ math.pi if target_angle < 0: target_angle = 360 + target_angle #translate the orientation to the # same system as the target angle fire_angle = 360 - self.orientation if fire_angle == 360: fire_angle = 0 fire_angle += 270 if fire_angle >= 360: fire_angle -= 360 #rotate to face the target delta = fire_angle - target_angle if delta > 5: self._rotating_left = True self._rotating_right = False elif delta < -5: self._rotating_left = False self._rotating_right = True else: self._rotating_left = False self._rotating_right = False self.targetted = True
def update(self): BaseSprite.update(self) if self.exploding: # do an explosion image for each tick self.explode_stage += 1 e = self.explode_stage if e < 8: e = str(e) img_name = python_nameconfig.enemy_explode_stage + e + ".png" self.master_image = pygame.image.load(img_name) self._update_image() return else: # explosion is done self.visible = False self.exploding = False self.kill() return
def update(self): """update - update internal data and position. Typically called by the game controller each game tick. """ BaseSprite.update(self) self.ticks += 1 if not self.exploding and self.ticks > self.max_ticks: self.kill() if self.exploding: self.explodestage += 1 e = self.explodestage if e < 5: e = str(e) self.masterImage = pygame.image.load(python_nameconfig.bullet_explode_stage + e + ".png") self._update_image() else: self.kill()