def bouge(self): """ méthode pour faire bouger le tank """ if self.human: key_pressed = pygame.key.get_pressed() # capture touche pressée if (key_pressed[K_LEFT] or key_pressed[K_RIGHT]): #orientation du tank si touche pressée LEFT(rotation +1) ou RIGTH(rotation-1) self.rotates(key_pressed[K_LEFT] - key_pressed[K_RIGHT]) if (key_pressed[K_s] or key_pressed[K_d]): #rotation du canon uniquement si touches pressée 'S'(rotation +1) ou 'D' (rotation-1) index_angle_wp = ( (key_pressed[K_s] - key_pressed[K_d]) + self.l_rotation[self.id_weapon] ) % self.nb_rotates #nouvel indice d'angle du canon angle_wp_rel = ( (index_angle_wp - self.l_rotation[self.id_hull]) % self.nb_rotates) * 360 / self.nb_rotates if ( angle_wp_rel <= 90 or angle_wp_rel >= 270 ): #le canon ne peut être orienté qu'à 90° par rapport au corps du tank, vers la droite ou vers la gauche self.rotates(key_pressed[K_s] - key_pressed[K_d], self.id_weapon) #accélération du tank selon commande d'accélération UP ou DOWN self.accel = self.new_accel * (key_pressed[K_UP] - key_pressed[K_DOWN]) Agent.bouge(self) # nouvelle position et orientation du tank if self.shell.countdown > 0: # l'obus a été tiré self.shell.countdown -= 1 # décompte le compte à rebours de l'obus self.shell.bouge() # anime l'obus if self.shell.explosion.booom: # l'obus tiré a rencontré un obstacle self.shell.explosion.bouge() # anime l'explosion
def bouge(self): """ méthode pour animer l'explosion """ if self.booom: if self.timer>0: self.l_actif[self.timer-1] = False # désactive l'imge précédente self.l_actif[self.timer] = True # active image suivante selon timer interne if self.timer == len(self.l_img_name) -1 : # fin de l'explosion self.booom = False self.desactivates_all() self.timer = 0 Agent.bouge(self)
def bouge(self): """ méthode pour faire bouger l'obus """ if self.timer > 0: # boule de feux de tir activée au tout début, quand timer = 0 self.l_actif[self.id_fire]=False if self.countdown == 0: # fin du compte à rebourg: arrêt et explosion de l'obus. self.v=0 Agent.bouge(self) if self.v==0: # l'obus a rencontré un obstacle : explosion activée self.explosion.pos = (self.pos[0]-self.explosion.half_size+self.half_size, self.pos[1]-self.explosion.half_size+self.half_size ) # positionne l'explosion centrée sur l'obus self.explosion.booom = True # active l'animation de l'explosion
def bouge(self): """ méthode pour faire bouger l'obus """ self.l_actif[self.id_fire] = ( self.timer == 0 ) # boule de feux de tir activée uniquement au tout début, quand timer = 0 self.l_actif[self.id_shell] = (self.timer > 0) if self.countdown == 0: # fin du compte à rebourg: arrêt et explosion de l'obus. self.v = 0 Agent.bouge(self) if self.v == 0: # l'obus a rencontré un obstacle : explosion activée self.desactivates_all() #sésactive toutes les images self.explosion.pos = ( self.pos[0] - self.explosion.half_size + self.half_size, self.pos[1] - self.explosion.half_size + self.half_size ) # positionne l'explosion centrée sur l'obus self.explosion.booom = True # active l'animation de l'explosion
def bouge(self): """ méthode pour faire bouger le tank """ if self.human: key_pressed = pygame.key.get_pressed() # capture touche pressée #orientation du tank si touche pressée LEFT(rotation +1) ou RIGTH(rotation-1) self.rotates(key_pressed[K_LEFT] - key_pressed[K_RIGHT]) #rotation du canon uniquement si touches pressée 'S'(rotation +1) ou 'D' (rotation-1) self.rotates(key_pressed[K_s] - key_pressed[K_d], self.id_weapon) #accélération du tank selon commande d'accélération UP ou DOWN self.accel = self.new_accel*( key_pressed[K_UP] - key_pressed[K_DOWN] ) Agent.bouge(self) # nouvelle position et orientation du tank if self.shell.countdown > 0: # l'obus a été tiré self.shell.countdown -= 1 # décompte le compte à rebours de l'obus self.shell.bouge() # anime l'obus if self.shell.explosion.booom: # l'obus tiré a rencontré un obstacle self.shell.explosion.bouge() # anime l'explosion