mirror of
https://forge.apps.education.fr/blender-edutech/ropy.git
synced 2024-01-27 08:23:20 +01:00
Passage des niveaux 1,2,3.
This commit is contained in:
parent
031bdb4101
commit
d2de5620d4
BIN
ropy-16.blend
BIN
ropy-16.blend
Binary file not shown.
26
rp_cmd.py
26
rp_cmd.py
@ -22,8 +22,9 @@ from rp_lib import * # Bibliothèque Ropy
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
def mrp_avancer():
|
def mrp_avancer():
|
||||||
rp_avancer()
|
if rp_detect()==False:
|
||||||
rp_marquer()
|
rp_avancer()
|
||||||
|
rp_marquer()
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Commandes
|
# Commandes
|
||||||
@ -33,22 +34,13 @@ def commandes():
|
|||||||
|
|
||||||
print("Go !!")
|
print("Go !!")
|
||||||
rp_marquer()
|
rp_marquer()
|
||||||
|
|
||||||
rp_gauche()
|
rp_gauche()
|
||||||
mrp_avancer()
|
for i in range (19):
|
||||||
rp_droite()
|
mrp_avancer()
|
||||||
|
rp_gauche()
|
||||||
mrp_avancer()
|
for i in range (5):
|
||||||
mrp_avancer()
|
mrp_avancer()
|
||||||
mrp_avancer()
|
|
||||||
mrp_avancer()
|
|
||||||
|
|
||||||
rp_droite()
|
|
||||||
|
|
||||||
mrp_avancer()
|
|
||||||
mrp_avancer()
|
|
||||||
mrp_avancer()
|
|
||||||
|
|
||||||
rp_fin()
|
rp_fin()
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
<data>
|
<data>
|
||||||
<config>
|
<config>
|
||||||
<speed>4.0</speed>
|
<speed>10.0</speed>
|
||||||
<sound>True</sound>
|
<sound>False</sound>
|
||||||
<cam>
|
<cam>
|
||||||
<worldPosition.x>-6.888219356536865</worldPosition.x>
|
<worldPosition.x>8.954777717590332</worldPosition.x>
|
||||||
<worldPosition.y>-9.308107376098633</worldPosition.y>
|
<worldPosition.y>-41.523250579833984</worldPosition.y>
|
||||||
<worldPosition.z>10.550951957702637</worldPosition.z>
|
<worldPosition.z>40.40361404418945</worldPosition.z>
|
||||||
</cam>
|
</cam>
|
||||||
</config>
|
</config>
|
||||||
<mission>
|
<mission>
|
||||||
<current>2</current>
|
<current>4</current>
|
||||||
<level>3</level>
|
<level>5</level>
|
||||||
</mission>
|
</mission>
|
||||||
</data>
|
</data>
|
38
rp_lib.py
38
rp_lib.py
@ -394,7 +394,7 @@ def rp_marquer ():
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
# Points et console
|
# 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)
|
rp_tempo (0.1)
|
||||||
x = obj.worldPosition.x
|
x = obj.worldPosition.x
|
||||||
y = obj.worldPosition.y
|
y = obj.worldPosition.y
|
||||||
@ -433,7 +433,41 @@ def rp_detect ():
|
|||||||
|
|
||||||
# Points et console
|
# Points et console
|
||||||
print ("rp_detect")
|
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
|
# Prendre
|
||||||
|
16
rp_map1.py
16
rp_map1.py
@ -50,7 +50,8 @@ missions_conf.update({"1" : [mission_1_init, mission_1_aim]})
|
|||||||
|
|
||||||
# Mission 2
|
# Mission 2
|
||||||
mission_2_title="Mission 2\n Ma première fonction"
|
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_init=[-11.0,3.0, "e"]
|
||||||
mission_2_aim=[-7.0,2.0]
|
mission_2_aim=[-7.0,2.0]
|
||||||
missions_card_description.update({"mission_2-card" : [mission_2_title, mission_2_text]})
|
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
|
||||||
mission_3_title="Mission 3\n Apprendre le danger"
|
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="\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_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é
|
mission_3_aim=[100.0,100.0] # Aim caché
|
||||||
missions_card_description.update({"mission_3-card" : [mission_3_title, mission_3_text]})
|
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
|
||||||
mission_6_title="Mission 6\n Se rendre utile"
|
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_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
|
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]})
|
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 [x,y] in scene.objects['Terrain']['map_aim']: # Aim
|
||||||
if len(scene.objects['Terrain']['map_tile_beacon'])>=6: # 6 balises posées mini
|
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
|
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):
|
if rp_cmd_txtcount(txt):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
# Mission 3 (structure alternative)
|
# Mission 3 (structure alternative)
|
||||||
if scene.objects['Points']['mission']==3:
|
# Le controle de l'objectif est dans la fonction rp_detect().
|
||||||
return False
|
|
||||||
|
|
||||||
# Mission 4 (boucle en for)
|
# Mission 4 (boucle en for)
|
||||||
if scene.objects['Points']['mission']==4:
|
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)
|
# Mission 5 (boucle en while)
|
||||||
if scene.objects['Points']['mission']==5:
|
if scene.objects['Points']['mission']==5:
|
||||||
|
Loading…
Reference in New Issue
Block a user