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.
16
rp_cmd.py
16
rp_cmd.py
@ -22,6 +22,7 @@ from rp_lib import * # Bibliothèque Ropy
|
||||
###############################################################################
|
||||
|
||||
def mrp_avancer():
|
||||
if rp_detect()==False:
|
||||
rp_avancer()
|
||||
rp_marquer()
|
||||
|
||||
@ -33,20 +34,11 @@ def commandes():
|
||||
|
||||
print("Go !!")
|
||||
rp_marquer()
|
||||
|
||||
rp_gauche()
|
||||
for i in range (19):
|
||||
mrp_avancer()
|
||||
rp_droite()
|
||||
|
||||
mrp_avancer()
|
||||
mrp_avancer()
|
||||
mrp_avancer()
|
||||
mrp_avancer()
|
||||
|
||||
rp_droite()
|
||||
|
||||
mrp_avancer()
|
||||
mrp_avancer()
|
||||
rp_gauche()
|
||||
for i in range (5):
|
||||
mrp_avancer()
|
||||
|
||||
rp_fin()
|
||||
|
@ -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>
|
38
rp_lib.py
38
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
|
||||
|
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_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:
|
||||
|
Loading…
Reference in New Issue
Block a user