Passage des niveaux 1,2,3.

This commit is contained in:
Philippe Roy 2022-09-22 06:44:37 +02:00
parent 031bdb4101
commit d2de5620d4
5 changed files with 61 additions and 33 deletions

Binary file not shown.

View File

@ -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,21 +34,12 @@ 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()

View File

@ -1,15 +1,15 @@
<data>
<config>
<speed>4.0</speed>
<sound>True</sound>
<speed>10.0</speed>
<sound>False</sound>
<cam>
<worldPosition.x>-6.888219356536865</worldPosition.x>
<worldPosition.y>-9.308107376098633</worldPosition.y>
<worldPosition.z>10.550951957702637</worldPosition.z>
<worldPosition.x>8.954777717590332</worldPosition.x>
<worldPosition.y>-41.523250579833984</worldPosition.y>
<worldPosition.z>40.40361404418945</worldPosition.z>
</cam>
</config>
<mission>
<current>2</current>
<level>3</level>
<current>4</current>
<level>5</level>
</mission>
</data>

View File

@ -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

View File

@ -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: