diff --git a/ropy-16.blend b/ropy-16.blend index fd1b99a..8954f7c 100644 Binary files a/ropy-16.blend and b/ropy-16.blend differ diff --git a/rp_cmd.py b/rp_cmd.py index a9c4e00..e0bc467 100644 --- a/rp_cmd.py +++ b/rp_cmd.py @@ -22,8 +22,9 @@ from rp_lib import * # Bibliothèque Ropy ############################################################################### def mrp_avancer(): - rp_avancer() - rp_marquer() + if rp_detect()==False: + rp_avancer() + rp_marquer() ############################################################################### # Commandes @@ -33,22 +34,13 @@ def commandes(): print("Go !!") rp_marquer() - rp_gauche() - mrp_avancer() - rp_droite() - - mrp_avancer() - mrp_avancer() - mrp_avancer() - mrp_avancer() - - rp_droite() - - mrp_avancer() - mrp_avancer() - mrp_avancer() - + for i in range (19): + mrp_avancer() + rp_gauche() + for i in range (5): + mrp_avancer() + rp_fin() ############################################################################### diff --git a/rp_config.xml b/rp_config.xml index 4b2f796..c51065e 100644 --- a/rp_config.xml +++ b/rp_config.xml @@ -1,15 +1,15 @@ - 4.0 - True + 10.0 + False - -6.888219356536865 - -9.308107376098633 - 10.550951957702637 + 8.954777717590332 + -41.523250579833984 + 40.40361404418945 - 2 - 3 + 4 + 5 \ No newline at end of file diff --git a/rp_lib.py b/rp_lib.py index c9a1333..db0b943 100644 --- a/rp_lib.py +++ b/rp_lib.py @@ -394,7 +394,7 @@ def rp_marquer (): return False # Points et console - print ("rp_marquer(), balise #"+ str(len(scene.objects['Terrain']['map_tile_beacon']))) + print ("rp_marquer() -> balise #"+ str(len(scene.objects['Terrain']['map_tile_beacon']))) rp_tempo (0.1) x = obj.worldPosition.x y = obj.worldPosition.y @@ -433,7 +433,41 @@ def rp_detect (): # Points et console print ("rp_detect") - # FIXME + + # Détection + x0 = obj.worldPosition.x + y0 = obj.worldPosition.y + z0 = obj.worldPosition.z + if round(obj.worldOrientation.to_euler().z, 2) == 0.00: # Sud + x1 = x0 + y1 = y0-1 + if round(obj.worldOrientation.to_euler().z, 2) == round(math.pi,2) or round(obj.worldOrientation.to_euler().z, 2) == - round(math.pi,2) : # Nord + x1 = x0 + y1 = y0+1 + if round(obj.worldOrientation.to_euler().z, 2) == round(math.pi/2,2) or round(obj.worldOrientation.to_euler().z, 2) == -round(3*(math.pi/2),2) : # Est + x1 = x0+1 + y1 = y0 + if round(obj.worldOrientation.to_euler().z, 2) == round(-math.pi/2,2) or round(obj.worldOrientation.to_euler().z, 2) == round(3*(math.pi/2),2) : # Ouest + x1 = x0-1 + y1 = y0 + if [x1,y1] in scene.objects['Terrain']['map_tile_montain']: + print ("Présence de montage devant !") + if scene.objects['Points']['mission']==3: # Contrôle objectif mission 3 + rover_goal () + return True + + if [x1,y1] in scene.objects['Terrain']['map_tile_station']: + print ("Présence de la station devant !") + if scene.objects['Points']['mission']==3: # Contrôle objectif mission 3 + rover_goal () + return True + + if [x1,y1] in scene.objects['Terrain']['map_tile_station']: + print ("Sortie de carte devant !") + if scene.objects['Points']['mission']==3: # Contrôle objectif mission 3 + rover_goal () + return True + return False ## # Prendre diff --git a/rp_map1.py b/rp_map1.py index e9d3d90..25e2b5d 100644 --- a/rp_map1.py +++ b/rp_map1.py @@ -50,7 +50,8 @@ missions_conf.update({"1" : [mission_1_init, mission_1_aim]}) # Mission 2 mission_2_title="Mission 2\n Ma première fonction" -mission_2_text= "\n \n Pour faciliter le codage, vous allez \n créer la fonction \"mrp_avancer()\" \n regroupant avancer et marquer. \n -> Voir onglet Python, page \"Fonction\"." +mission_2_text="\n \n La case à atteindre est toujours la \n même (à l'est de la station). \n \n" +mission_2_text= mission_2_text + " Pour faciliter le codage, vous devez \n créer et utiliser la fonction \n \"mrp_avancer()\" regroupant avancer \n et marquer. \n -> Voir onglet Python, page \"Fonction\". \n\n\n\n\n" mission_2_init=[-11.0,3.0, "e"] mission_2_aim=[-7.0,2.0] missions_card_description.update({"mission_2-card" : [mission_2_title, mission_2_text]}) @@ -59,7 +60,7 @@ missions_conf.update({"2" : [mission_2_init, mission_2_aim]}) # Mission 3 mission_3_title="Mission 3\n Apprendre le danger" mission_3_text="\n \n Tout d'abords, il faut provoquer une \n collision avec un obstacle (pente \n ou station) et observer ce qui se \n passe.\n \n" -mission_3_text= mission_3_text + " Il faut donc sécuriser Ropy en utilisant \n une structure alternative. \n -> Voir onglet Python, page \"Si alors\" \n -> Voir onglet Rover, page \"Détecter\" \n \n" +mission_3_text= mission_3_text + " Il faut donc sécuriser Ropy en \n utilisant une structure alternative. \n -> Voir onglet Python, page \"Si alors\" \n -> Voir onglet Rover, page \"Détecter\" \n \n" mission_3_init=[-11.0,3.0, "e"] # Rover init position (x,y), orientation ("n|s|e|w") mission_3_aim=[100.0,100.0] # Aim caché missions_card_description.update({"mission_3-card" : [mission_3_title, mission_3_text]}) @@ -87,7 +88,7 @@ missions_conf.update({"5" : [mission_5_init, mission_5_aim]}) # Mission 6 mission_6_title="Mission 6\n Se rendre utile" -mission_6_text="\n \n Une zone précise du terrain présente \n des pierres à analyser. \n \n Elles apparaissent de manière \n aléatoire (encore ...), pour les \n ramasser, Ropy doit passer sur toutes \n les cases de la zone. \n \n \n \n \n \n \n" +mission_6_text="\n \n Une zone précise du terrain présente \n des pierres à analyser. \n \n Elles apparaissent de manière \n aléatoire (encore !), pour les \n ramasser, Ropy doit passer sur \n toutes les cases de la zone. \n \n \n \n \n \n \n" mission_6_init=[-7.0,4.0, "s"] # FIXME position aléatoire mission_6_aim=[9.0,11.0] # FIXME plusieurs objectifs avec des positions aléatoires missions_card_description.update({"mission_6-card" : [mission_6_title, mission_6_text]}) @@ -216,17 +217,18 @@ def objectif_control(x,y): if [x,y] in scene.objects['Terrain']['map_aim']: # Aim if len(scene.objects['Terrain']['map_tile_beacon'])>=6: # 6 balises posées mini if scene.objects['Points']['nbligne'] <=40: # 40 lignes de code maxi - txt=["def mrp_avancer():", "def mrp_avancer() :", "def mrp_avancer ():", "def mrp_avancer () :"] + txt=["def mrp_avancer():", "def mrp_avancer() :", "def mrp_avancer ():", "def mrp_avancer () :"] # Présence de "def mrp_avancer():" if rp_cmd_txtcount(txt): return True # Mission 3 (structure alternative) - if scene.objects['Points']['mission']==3: - return False + # Le controle de l'objectif est dans la fonction rp_detect(). # Mission 4 (boucle en for) if scene.objects['Points']['mission']==4: - return False + if [x,y] in scene.objects['Terrain']['map_aim']: # Aim + if scene.objects['Points']['nbligne'] <=40: # 40 lignes de code maxi + return True # Mission 5 (boucle en while) if scene.objects['Points']['mission']==5: