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))
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)
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()
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()
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()
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()
def test_contruct_tc(self): tc = TerrainContinu.Carre(20) self.assertIsNotNone(tc.polygoneSurface) self.assertIsNotNone(tc.listePolygone)
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))