Пример #1
0
    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
Пример #2
0
 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)
Пример #3
0
 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
Пример #4
0
 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
Пример #5
0
    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