Пример #1
0
    def avancer(self, canvas, item, dessin_capteur, obstacles):
        """ fonction qui permet au robot d'avancer selon sa direction,
            on donnera comme argument un canvas sur lequel representer le mouvement, un item ,qui sera ici notre robot, sur lequel appliquer le mouvement,
            un dessin_capteur, c'est a dire le dessin de notre capteur pour le mettre a jour et une liste d'obstacles qui faudra potentiellement eviter
        """

        if self.pause == False:
            self.robot.dx = fm.cos(
                fm.convertir_direction_angle(self.robot.direction[0],
                                             self.robot.direction[1])
            )  #on calcule d'abord le deplacement relatif du robot dx dy
            self.robot.dy = fm.sin(
                fm.convertir_direction_angle(
                    self.robot.direction[0],
                    self.robot.direction[1]))  #EN FONCTION DE SA DIRECTION

            self.robot.x += self.robot.dx  #puis on incremente x et y
            self.robot.y += self.robot.dy

            # et on met a jour les points relatifs pour avoir un affichage coherent

            self.update_coords_dir()
            canvas.coords(item, self.robot.A[0], self.robot.A[1],
                          self.robot.B[0], self.robot.B[1], self.robot.C[0],
                          self.robot.C[1])

            #on fait marcher le capteur
            if (self.robot.capteur.detect(canvas, dessin_capteur, obstacles)
                    == True or self.robot.A[0] >= 900 or self.robot.A[0] <= 0
                    or self.robot.A[1] >= 900 or self.robot.A[1] <= 0):

                self.arreter()
                self.afficher_pas_restant(obstacles)
Пример #2
0
 def update_coords(self, canvas, item):
     """mise a jour des coordonnees absolues du capteur + mise a jour de l'affichage"""
     
     self.x = self.robot.A[0]
     self.y = self.robot.A[1]
     self.x1 = self.x + self.longueur * fm.cos(fm.convertir_direction_angle(self.robot.direction[0], self.robot.direction[1]))
     self.y1 = self.y + self.longueur * fm.sin(fm.convertir_direction_angle(self.robot.direction[0], self.robot.direction[1]))
     
     canvas.coords(item, self.x, self.y, self.x1, self.y1)
Пример #3
0
    def update_coords(self, canvas, item):
        """mise a jour des coordonnees absolues du capteur + mise a jour de l'affichage"""

        self.x = self.robot.A[0]
        self.y = self.robot.A[1]
        self.x1 = self.x + self.longueur * fm.cos(
            fm.convertir_direction_angle(self.robot.direction[0],
                                         self.robot.direction[1]))
        self.y1 = self.y + self.longueur * fm.sin(
            fm.convertir_direction_angle(self.robot.direction[0],
                                         self.robot.direction[1]))

        canvas.coords(item, self.x, self.y, self.x1, self.y1)
Пример #4
0
 def __init__(self, longueur, robot):
     """initialise le capteur
     les champs du capteur seront un robot sur lequel il agira, un point x et y, une longueur, et deux autres points x1 et y1
     qui seront determine mathematiquement et qui delimiteront la portee du capteur
     """
     
     self.robot = robot
     self.x = self.robot.A[0]
     self.y = self.robot.A[1]
     self.longueur = longueur
 
     self.x1 = self.x + self.longueur * fm.cos(fm.convertir_direction_angle(self.robot.direction[0], self.robot.direction[1]))
     self.y1 = self.y + self.longueur * fm.sin(fm.convertir_direction_angle(self.robot.direction[0], self.robot.direction[1]))
Пример #5
0
    def __init__(self, longueur, robot):
        """initialise le capteur
        les champs du capteur seront un robot sur lequel il agira, un point x et y, une longueur, et deux autres points x1 et y1
        qui seront determine mathematiquement et qui delimiteront la portee du capteur
        """

        self.robot = robot
        self.x = self.robot.A[0]
        self.y = self.robot.A[1]
        self.longueur = longueur

        self.x1 = self.x + self.longueur * fm.cos(
            fm.convertir_direction_angle(self.robot.direction[0],
                                         self.robot.direction[1]))
        self.y1 = self.y + self.longueur * fm.sin(
            fm.convertir_direction_angle(self.robot.direction[0],
                                         self.robot.direction[1]))
Пример #6
0
    def update_coords_dir(self):
        """permet de mettre a jour les coordonnees relatifs du robot suite a un changement de direction"""

        self.robot.update_points_triangle(
        )  #on met a jour ABC et le centre de gravite pour s'assurer d'avoir les bonnes valeurs pour les calculs,
        #meme si on ecrasera ces valeurs par les nouvelles

        self.robot.A = fm.tourner_point(
            self.robot.centregravite[0], self.robot.centregravite[1],
            fm.convertir_direction_angle(self.robot.direction[0],
                                         self.robot.direction[1]),
            self.robot.A)
        self.robot.B = fm.tourner_point(
            self.robot.centregravite[0], self.robot.centregravite[1],
            fm.convertir_direction_angle(self.robot.direction[0],
                                         self.robot.direction[1]),
            self.robot.B)
        self.robot.C = fm.tourner_point(
            self.robot.centregravite[0], self.robot.centregravite[1],
            fm.convertir_direction_angle(self.robot.direction[0],
                                         self.robot.direction[1]),
            self.robot.C)
Пример #7
0
 def avancer(self, canvas, item, dessin_capteur, obstacles):
     """ fonction qui permet au robot d'avancer selon sa direction,
         on donnera comme argument un canvas sur lequel representer le mouvement, un item ,qui sera ici notre robot, sur lequel appliquer le mouvement,
         un dessin_capteur, c'est a dire le dessin de notre capteur pour le mettre a jour et une liste d'obstacles qui faudra potentiellement eviter
     """
     
     if self.pause==False:
         self.robot.dx = fm.cos(fm.convertir_direction_angle(self.robot.direction[0], self.robot.direction[1]))  #on calcule d'abord le deplacement relatif du robot dx dy
         self.robot.dy = fm.sin(fm.convertir_direction_angle(self.robot.direction[0], self.robot.direction[1]))  #EN FONCTION DE SA DIRECTION
         
         self.robot.x += self.robot.dx   #puis on incremente x et y
         self.robot.y += self.robot.dy
         
         # et on met a jour les points relatifs pour avoir un affichage coherent
         
         self.update_coords_dir() 
         canvas.coords(item , self.robot.A[0], self.robot.A[1], self.robot.B[0], self.robot.B[1], self.robot.C[0], self.robot.C[1])
             
         #on fait marcher le capteur
         if (self.robot.capteur.detect(canvas, dessin_capteur, obstacles)==True 
         or self.robot.A[0]>=900 or self.robot.A[0]<=0 or self.robot.A[1]>=900 or self.robot.A[1]<=0):
         
             self.arreter()
             self.afficher_pas_restant(obstacles)
Пример #8
0
 def update_coords_dir(self):
     """permet de mettre a jour les coordonnees relatifs du robot suite a un changement de direction"""
     
     self.robot.update_points_triangle() #on met a jour ABC et le centre de gravite pour s'assurer d'avoir les bonnes valeurs pour les calculs,
                                         #meme si on ecrasera ces valeurs par les nouvelles
                                         
     self.robot.A= fm.tourner_point(self.robot.centregravite[0], self.robot.centregravite[1], fm.convertir_direction_angle(self.robot.direction[0], self.robot.direction[1]), self.robot.A)
     self.robot.B= fm.tourner_point(self.robot.centregravite[0], self.robot.centregravite[1], fm.convertir_direction_angle(self.robot.direction[0], self.robot.direction[1]), self.robot.B)
     self.robot.C= fm.tourner_point(self.robot.centregravite[0], self.robot.centregravite[1], fm.convertir_direction_angle(self.robot.direction[0], self.robot.direction[1]), self.robot.C)
Пример #9
0
 def tourner_vers_objectif (self,obj):
     u=obj.x-self.robot.x
     v=obj.y-self.robot.y
     self.tourner_radiant(fm.convertir_direction_angle(u,v))
         
         
Пример #10
0
 def tourner_vers_objectif(self, obj):
     u = obj.x - self.robot.x
     v = obj.y - self.robot.y
     self.tourner_radiant(fm.convertir_direction_angle(u, v))