Пример #1
0
    def test_collision(self):
        """tuple (int * int) * Vecteur -> boolean
        méthode qui verifie la collision du robot avec les objets contenu sur le terrain ainsi qu'avec 
        les vecteurs qui le delimitent
        : param tuple : coordonnees du robot
        : param Vecteur : vecteur de deplacement du robot
        """

        tc = TerrainContinu.Carre(20)
        tc.ajoutPolygone(Polygone.Carre((10., 10.), 5))

        posOrigine = (3., 3.)
        vecteurDeplacement = Vecteur.Vecteur(random.uniform(-10., 10.),
                                             random.uniform(-10., 10.))

        b = False
        for p in tc.listePolygone:
            if p.collision(posOrigine, vecteurDeplacement):
                b = True
        # posX, posY : position du premier vecteur du terrain
        posX = tc.polygoneSurface.liste_sommet[0].x
        posY = tc.polygoneSurface.liste_sommet[1].y
        for v in tc.polygoneSurface.liste_vecteur:
            # vecteurDeplacement et (x,y) du robot
            if v.collision((posX, posY), vecteurDeplacement, posOrigine):
                b = True
            # calcul de l'origine des vecteurs suivants
            posX = posX + v.x
            posY = posY + v.y

        self.assertTrue(b == tc.collision(posOrigine, vecteurDeplacement))
Пример #2
0
    def test_continu_to_discret(self):
        tc = TerrainContinu.Carre(20)
        t = Terrain.construireTerrain(
            tc, Robot.Robot(random.uniform(0.2, 4.), random.uniform(0.2, 4.)))

        xMax = None
        yMax = None
        xMin = None
        yMin = None
        for sommetSurface in tc.polygoneSurface._liste_sommet:
            x, y = sommetSurface

            if xMax is None or x > xMax:
                xMax = x
            if yMax is None or y > yMax:
                yMax = y

            if xMin is None or x < xMin:
                xMin = x
            if yMin is None or y < yMin:
                yMin = y

        # x 1.1 pour les problèmes d'affichage lié aux approximations
        terrain = Terrain.Terrain(
            abs(yMin - yMax) + t.echelle,
            abs(xMax - xMin) + t.echelle, t.echelle, xMin, yMin)
        self.assertTrue(terrain.nbColonnes == t.nbColonnes)
        self.assertTrue(terrain.nbLignes == t.nbLignes)
Пример #3
0
def run():
    tc = TerrainContinu.Carre(20)
    robot = Robot.Robot(-3, -3, 0., 0.)
    stratIAS = StrategieIASimule.StrategieIASimule(robot, 4., tc)
    fps = 60

    t1 = threading.Thread(target=affichage, args=(robot, tc, fps))
    t2 = threading.Thread(target=updateStrats, args=(stratIAS, fps))
    t3 = threading.Thread(target=updateRobot, args=(robot, tc, fps))
    t1.start()
    t2.start()
    t3.start()
Пример #4
0
def run():
    tc = TerrainContinu.Carre(20)
    robot = Robot.Robot(-3, -3, 0., 0.)
    stratmax = StrategieAvancerDroitMax.StrategieAvancerDroitMax(robot, 5., tc)
    fps = 60

    t1 = threading.Thread(target=affichage, args=(robot, tc, fps))
    t2 = threading.Thread(target=updateStrats, args=(stratmax, fps))
    t3 = threading.Thread(target=updateRobot, args=(robot, tc, fps))
    t1.start()
    t2.start()
    t3.start()
Пример #5
0
def run(cote):
    tc = TerrainContinu.Carre(20)
    robot = Robot.Robot(-3, -3, 0., 0.)
    startAvancer = StrategieAvancerDroit.StrategieAvancerDroit(robot, 7., 15.)
    startTourner = StrategieTourner.StrategieTourner(robot, 0., 0.)
    stratPolygone = StrategiePolygone.StrategiePolygone(
        startAvancer, startTourner, int(cote))
    fps = 60

    t1 = threading.Thread(target=affichage, args=(robot, tc, fps))
    t2 = threading.Thread(target=updateStrats, args=(stratPolygone, fps))
    t3 = threading.Thread(target=updateRobot, args=(robot, tc, fps))
    t1.start()
    t2.start()
    t3.start()
Пример #6
0
def run(cote):
    tc = TerrainContinu.Carre(20)
    #on ajoute deux obstacles d'origine (2,2) et (6,1) sur le terrain
    ObsC = Polygone.Carre((8, 6), 3)
    tc.ajoutPolygone(ObsC)
    ObsC = Polygone.Carre((9, 5), 3)
    tc.ajoutPolygone(ObsC)
    tc_s = Serializer.serialize(tc).encode()

    HOST = '127.0.0.1'  # Standard loopback interface address (localhost)
    PORT = 65432
    fps = 60

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((HOST, PORT))
    s.listen()
    conn, addr = s.accept()

    while True:
        data = conn.recv(1024)
        if not data:
            time.sleep(1. / fps)
            continue
        break

    conn.send(tc_s)

    robot = Robot.Robot(-3, -3, 0., 0.)
    startAvancer = StrategieAvancerDroit.StrategieAvancerDroit(robot, 7., 15.)
    startTourner = StrategieTourner.StrategieTourner(robot, 0., 0.)
    stratPolygone = StrategiePolygone.StrategiePolygone(
        startAvancer, startTourner, int(cote))
    t1 = threading.Thread(target=unity, args=(robot, s, conn, fps))
    t2 = threading.Thread(target=updateStrats, args=(stratPolygone, fps))
    t3 = threading.Thread(target=updateRobot, args=(robot, tc, fps))
    t1.start()
    t2.start()
    t3.start()
Пример #7
0
 def test_contruct_tc(self):
     tc = TerrainContinu.Carre(20)
     self.assertIsNotNone(tc.polygoneSurface)
     self.assertIsNotNone(tc.listePolygone)
Пример #8
0
 def test_ajout_polygone(self):
     tc = TerrainContinu.Carre(20)
     length = len(tc.listePolygone)
     p = Polygone.Polygone(((0., 1.), (1., 0), (4, 2)))
     tc.ajoutPolygone(p)
     self.assertTrue(length + 1 == len(tc.listePolygone))