mirror of
https://forge.apps.education.fr/blender-edutech/ropy.git
synced 2024-01-27 08:23:20 +01:00
Bugfix : la plupart des traces de l'aide ont été enlevées, mais il en reste encore.
This commit is contained in:
parent
48c102b6e4
commit
cb4d0ab871
BIN
ropy-29.blend
BIN
ropy-29.blend
Binary file not shown.
BIN
ropy-30.blend
Normal file
BIN
ropy-30.blend
Normal file
Binary file not shown.
@ -14,12 +14,12 @@
|
||||
</config>
|
||||
<mission>
|
||||
<current>1</current>
|
||||
<level>2</level>
|
||||
<level>1</level>
|
||||
</mission>
|
||||
<upgrade>
|
||||
<battery>False</battery>
|
||||
<beacon>False</beacon>
|
||||
<paint>False</paint>
|
||||
<speed>True</speed>
|
||||
<speed>False</speed>
|
||||
</upgrade>
|
||||
</data>
|
84
rp_doc.py
84
rp_doc.py
@ -46,22 +46,19 @@ rover_card=rover_card+["speed-card", "paint-card", "battery-card", "beacon-card"
|
||||
|
||||
# Avancer et reculer
|
||||
rp_forward_title="Avancer et reculer"
|
||||
rp_forward_text=" rp_avancer() \n -> Avance d'un pas en avant. \n\n"
|
||||
rp_forward_text=rp_forward_text + " rp_reculer() \n -> Recule d'un pas."
|
||||
rp_forward_text=" rp_avancer() \n -> Avance d'un pas en avant. \n \n rp_reculer() \n -> Recule d'un pas."
|
||||
rp_forward_type="standard"
|
||||
card_description.update({"forward-card" : [rp_forward_title, rp_forward_text, rp_forward_type]})
|
||||
|
||||
# Tourner
|
||||
rp_turn_title="Tourner"
|
||||
rp_turn_text=" rp_gauche() \n -> Tourne à gauche (90°).\n\n"
|
||||
rp_turn_text=rp_turn_text + " rp_droite() \n -> Tourne à droite (90°)."
|
||||
rp_turn_text=" rp_gauche() \n -> Tourne à gauche (90°).\n \n rp_droite() \n -> Tourne à droite (90°)."
|
||||
rp_turn_type="standard"
|
||||
card_description.update({"turn-card" : [rp_turn_title, rp_turn_text, rp_turn_type]})
|
||||
|
||||
# Baliser
|
||||
rp_delineate_title="Baliser"
|
||||
rp_delineate_text=" rp_marquer() \n -> Place une balise sur la case. \n\n Ropy possède que 20 balises, il ne \n peut pas en poser une de plus.\n\n"
|
||||
rp_delineate_text=rp_delineate_text + " Avec l'amélioration \"Balise +\", le \n nombre de balise transportées est \n étendu à 200. \n\n\n\n"
|
||||
rp_delineate_text=" rp_marquer() \n -> Place une balise sur la case. \n \n Ropy possède que 20 balises, il ne \n peut pas en poser une de plus.\n\n Avec l'amélioration \"Balise +\", le \n nombre de balise transportées est \n étendu à 200."
|
||||
rp_delineate_type="standard"
|
||||
card_description.update({"delineate-card" : [rp_delineate_title, rp_delineate_text, rp_delineate_type]})
|
||||
|
||||
@ -73,7 +70,7 @@ card_description.update({"detect-card" : [rp_detect_title, rp_detect_text, rp_de
|
||||
|
||||
# Radar
|
||||
rp_radar_title="Radar"
|
||||
rp_radar_text=" Le radar n'est toujours pas \n opérationnel ! \n\n Mais où est donc encore passé Thomas ! \n\n\n\n\n\n\n\n\n"
|
||||
rp_radar_text=" Le radar n'est toujours pas \n opérationnel ! \n \n Mais où est donc encore passé Thomas !"
|
||||
rp_radar_type="mission"
|
||||
card_description.update({"radar-card" : [rp_radar_title, rp_radar_text, rp_radar_type]})
|
||||
|
||||
@ -81,7 +78,7 @@ card_description.update({"radar-card" : [rp_radar_title, rp_radar_text, rp_radar
|
||||
rp_twins_title="Jumeau numérique"
|
||||
rp_twins_text=""" Via une liaison série, Ropy peut être \n le jumeau numérique d'un robot réel. \n
|
||||
rp_jumeau(port, vitesse) \n -> Active le jumeau réel par la liaison \n série (port et vitesse en baud) \n
|
||||
rp_serie_msg(texte) \n -> Envoi un message \n \ntexte=rp_serie_rcpt() \n -> Reçoit un message \n\n\n """
|
||||
rp_serie_msg(texte) \n -> Envoi un message \n \n texte=rp_serie_rcpt() \n -> Reçoit un message"""
|
||||
|
||||
# Message envoyé (asynchrone) : \n avancer : a, reculer : r, droite : d, \n gauche g, marquer : m et forer : f \n\n\n """
|
||||
rp_twins_type="standard"
|
||||
@ -94,7 +91,7 @@ storecard_description ={}
|
||||
rp_speed_title="Vitesse"
|
||||
rp_speed_text=" L'amélioration \"Vitesse\" permet de \n changer la vitesse des déplacements \n par l'interface (en bas à gauche).\n\n"
|
||||
rp_speed_text=rp_speed_text + " La vitesse est modifiable par codage : \n"
|
||||
rp_speed_text=rp_speed_text + " rp_vitesse(nouvelle_vitesse), où \n la vitesse est une valeur de 0,1 à 10.\n\n La fonction rp_vitesse() retourne la \n vitesse actuelle. \n\n\n"
|
||||
rp_speed_text=rp_speed_text + " rp_vitesse(nouvelle_vitesse), où \n la vitesse est une valeur de 0,1 à 10.\n\n La fonction rp_vitesse() retourne la \n vitesse actuelle."
|
||||
rp_speed_store="Permet de modifier\nla vitesse des \ndéplacements."
|
||||
rp_speed_purchased="Je vois ... \n l'efficacité, hein ! \n Vous verrez avec \n ces moteurs,\n c'est autre vie."
|
||||
rp_speed_type="upgrade"
|
||||
@ -102,11 +99,10 @@ card_description.update({"speed-card" : [rp_speed_title, rp_speed_text, rp_speed
|
||||
|
||||
# Paint - Peinture
|
||||
rp_paint_title="Peinture"
|
||||
# rp_paint_text=" L'amélioration \"Peinture\" permet de \n changer la couleur des objets. \n\n"
|
||||
rp_paint_text=" rp_couleur(objets, couleur) \n -> Change la couleur du groupe \n d'objets 3d. \n"
|
||||
rp_paint_text=rp_paint_text + " - La couleur est un tuple au format \n (R,V,B,Alpha) avec des valeurs de 0 à 1.\n"
|
||||
rp_paint_text=rp_paint_text + " - objets peut être : \"Rover 1\",\n \"Rover 2\", \"Rover 3\", \"Station 1\", \n \"Station 2\", \"Station 3\", \"Station 4\", \n \"Balises\" ou \"Balise 1\" à \"Balise 200\".\n\n"
|
||||
rp_paint_text=rp_paint_text + " rp_couleur_init(objets) \n -> Réinitialise la couleur des objets.\n rp_couleur_init() réinitialise tout !\n"
|
||||
rp_paint_text=rp_paint_text + " rp_couleur_init(objets) \n -> Réinitialise la couleur des objets.\n rp_couleur_init() réinitialise tout !"
|
||||
rp_paint_store="On refait la déco ?"
|
||||
rp_paint_purchased="Rien de tel qu'un \n peu de couleur \n dans ce monde \n de brute !"
|
||||
rp_paint_type="upgrade"
|
||||
@ -115,7 +111,7 @@ card_description.update({"paint-card" : [rp_paint_title, rp_paint_text, rp_paint
|
||||
# Battery + - Batterie +
|
||||
rp_battery_title="Batterie +"
|
||||
rp_battery_text=" L'amélioration \"Batterie +\" permet \n d'augmenter la capacité de la batterie \n du Rover à 200 pas (contre 20 pas). \n\n"
|
||||
rp_battery_text=rp_battery_text + " La fonction rp_batterie() retourne \n la charge actuelle de la batterie \n (valeur de 0 à 100 %).\n\n\n\n\n\n\n"
|
||||
rp_battery_text=rp_battery_text + " La fonction rp_batterie() retourne \n la charge actuelle de la batterie \n (valeur de 0 à 100 %)."
|
||||
rp_battery_store="Augmente la capacité \nde la batterie à 200 \nmouvements (contre \n20, plutôt faible ...).\n\n"
|
||||
rp_battery_purchased="Très bon choix ! \n Cette batterie \n vous va comme \n un gant."
|
||||
rp_battery_type="upgrade"
|
||||
@ -124,7 +120,7 @@ card_description.update({"battery-card" : [rp_battery_title, rp_battery_text, rp
|
||||
# Beacon + - Balise +
|
||||
rp_beacon_title="Balise +"
|
||||
rp_beacon_text=" L'amélioration \"Balise +\" permet \n d'augmenter le nombre de balises \n pouvant être posées à 200 (contre 20). \n\n"
|
||||
rp_beacon_text=rp_beacon_text + " La fonction rp_balise() retourne \n le nombre de balises dejà posées \n lors du trajet. \n\n\n\n\n\n\n\n"
|
||||
rp_beacon_text=rp_beacon_text + " La fonction rp_balise() retourne \n le nombre de balises dejà posées \n lors du trajet."
|
||||
rp_beacon_store="Porte le nombre de \nbalises transportées\nà 200 (contre 20)."
|
||||
rp_beacon_purchased="Les colis viennent \n tout juste d'être \n livrés. Un vrai sapin de Noël, \nce terrain !"
|
||||
rp_beacon_type="upgrade"
|
||||
@ -141,7 +137,7 @@ python_card=["function-card", "alternative-card", "loop-card", "flow-card", "con
|
||||
rp_function_title="Fonction"
|
||||
rp_function_text=" La définition d'une fonction se fait \n avec \"def\". La fonction peut \n renvoyer une valeur avec \"return\". \n\n"
|
||||
rp_function_text=rp_function_text + " def fonction_1 (arguments) : \n instruction_1 \n instruction_2 \n ....\n return valeurs_renvoyées \n\n"
|
||||
rp_function_text=rp_function_text + " Les arguments sont des données \n transmises à la fonction. \n\n"
|
||||
rp_function_text=rp_function_text + " Les arguments sont des données \n transmises à la fonction."
|
||||
rp_function_url=[["w3schools.com : functions","https://www.w3schools.com/python/python_functions.asp"]]
|
||||
card_description.update({"function-card" : [rp_function_title, rp_function_text, rp_function_url]})
|
||||
|
||||
@ -154,7 +150,7 @@ rp_alternative_text=rp_alternative_text + " if condition :\n"
|
||||
rp_alternative_text=rp_alternative_text + " instruction_1\n"
|
||||
rp_alternative_text=rp_alternative_text + " else : \n"
|
||||
rp_alternative_text=rp_alternative_text + " instruction_2\n\n"
|
||||
rp_alternative_text=rp_alternative_text + "Le sinon (\"else\") est facultatif. \n\n"
|
||||
rp_alternative_text=rp_alternative_text + "Le sinon (\"else\") est facultatif."
|
||||
rp_alternative_url=[["w3schools.com : if ... else","https://www.w3schools.com/python/python_conditions.asp"]]
|
||||
card_description.update({"alternative-card" : [rp_alternative_title, rp_alternative_text, rp_alternative_url]})
|
||||
|
||||
@ -162,7 +158,7 @@ card_description.update({"alternative-card" : [rp_alternative_title, rp_alternat
|
||||
rp_loop_title="Boucles"
|
||||
rp_loop_text=" Il y a deux types de boucle : \n - avec \"for\" pour définir un nombre \n de répétition (ici N), \n - avec \"while\" (tant que) pour \n prendre en compte une condition. \n \n"
|
||||
rp_loop_text=rp_loop_text + " for i in range (n) : \n instruction \n \n"
|
||||
rp_loop_text=rp_loop_text + " while condition : \n instruction \n \n"
|
||||
rp_loop_text=rp_loop_text + " while condition : \n instruction"
|
||||
rp_loop_url=[["w3schools.com : for","https://www.w3schools.com/python/python_for_loops.asp"],
|
||||
["w3schools.com : while","https://www.w3schools.com/python/python_while_loops.asp"]]
|
||||
card_description.update({"loop-card" : [rp_loop_title, rp_loop_text, rp_loop_url]})
|
||||
@ -172,14 +168,14 @@ rp_flow_title="Contrôle du flux"
|
||||
rp_flow_text=" Les structures (if, while, for) peuvent \n être gérées plus finement par les \n fonctions \"break\", \"continue\" et \"pass\". \n\n"
|
||||
rp_flow_text= rp_flow_text + "- \"break\" : Termine l'itération en cours \n et arrête la boucle.\n"
|
||||
rp_flow_text= rp_flow_text + "- \"continue\" : Termine l'itération en \n cours et reprend la boucle.\n"
|
||||
rp_flow_text= rp_flow_text + "- \"pass\" : Instruction vide. \n\n\n\n\n\n"
|
||||
rp_flow_text= rp_flow_text + "- \"pass\" : Instruction vide."
|
||||
rp_flow_url=[["w3schools.com : break","https://www.w3schools.com/python/ref_keyword_break.asp"],
|
||||
["w3schools.com : continue","https://www.w3schools.com/python/ref_keyword_break.asp"],
|
||||
["w3schools.com : pass","https://www.w3schools.com/python/ref_keyword_pass.asp"]]
|
||||
card_description.update({"flow-card" : [rp_flow_title, rp_flow_text, rp_flow_url]})
|
||||
|
||||
# Chaine de caractère
|
||||
rp_text_title="Chaîne de caractères\n(texte)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||
rp_text_title="Chaîne de caractères\n(texte)"
|
||||
rp_text_text="\nFIXME"
|
||||
rp_text_url=[["w3schools.com : strings","https://www.w3schools.com/python/python_strings.asp"]]
|
||||
card_description.update({"text-card" : [rp_text_title, rp_text_text, rp_text_url]})
|
||||
@ -216,7 +212,7 @@ card_description.update({"console-card" : [rp_console_title, rp_console_text, rp
|
||||
rp_sleep_title="Gestion du temps"
|
||||
rp_sleep_text=" Vous pouvez créer des temporisations \n dans le déroulement du script.\n\n"
|
||||
rp_sleep_text= rp_sleep_text + " time.sleep(x) \n -> Marque d'un temps d'arrêt de \n x secondes.\n\n"
|
||||
rp_sleep_text= rp_sleep_text + " Il faudra préalablement importer la \n bibliothèque \"time\" avec \"import time\". \n\n\n\n\n\n"
|
||||
rp_sleep_text= rp_sleep_text + " Il faudra préalablement importer la \n bibliothèque \"time\" avec \"import time\"."
|
||||
rp_sleep_url=[["docs.python.org : sleep","https://docs.python.org/fr/3/library/time.html#time.sleep"]]
|
||||
card_description.update({"sleep-card" : [rp_sleep_title, rp_sleep_text, rp_sleep_url]})
|
||||
|
||||
@ -282,9 +278,9 @@ def open():
|
||||
scene.objects['Doc_close'].color = color_doc_chap
|
||||
scene.objects['Doc'].setVisible(True,True)
|
||||
scene.objects['Doc_title']['Text'] = " "
|
||||
scene.objects['Doc_text']['Text'] = " "
|
||||
text_clear()
|
||||
scene.objects['Doc_title'].setVisible(False,True)
|
||||
scene.objects['Doc_text'].setVisible(False,True)
|
||||
text_hide()
|
||||
|
||||
# Placer le nouveau chapitre
|
||||
name_chap = scene.objects['Doc']['page_chap']
|
||||
@ -333,19 +329,18 @@ def open():
|
||||
if scene.objects['Doc_chap-'+name_chap]['page_fct'] !="":
|
||||
name_fct = scene.objects['Doc_chap-'+name_chap]['page_fct']
|
||||
scene.objects['Doc_title']['Text'] = card_description[name_fct][0]
|
||||
scene.objects['Doc_text']['Text'] = card_description[name_fct][1]
|
||||
scene.objects['Doc_title'].setVisible(True, False)
|
||||
scene.objects['Doc_text'].setVisible(True, False)
|
||||
text_update(card_description[name_fct][1])
|
||||
else:
|
||||
scene.objects['Doc_title'].setVisible(False,True)
|
||||
scene.objects['Doc_text'].setVisible(False,True)
|
||||
text_hide()
|
||||
else:
|
||||
if name_chap != "missions":
|
||||
scene.objects['Doc_title'].setVisible(False,True)
|
||||
scene.objects['Doc_text'].setVisible(False,True)
|
||||
text_hide()
|
||||
else:
|
||||
scene.objects['Doc_title'].setVisible(False,True)
|
||||
scene.objects['Doc_text'].setVisible(False,True)
|
||||
text_hide()
|
||||
|
||||
##
|
||||
# Fermeture du livre
|
||||
@ -444,7 +439,7 @@ def chapter(cont):
|
||||
# sound_play (sndbuff_book_flip)
|
||||
obj = cont.owner
|
||||
scene.objects['Doc_title']['Text'] = " "
|
||||
scene.objects['Doc_text']['Text'] = " "
|
||||
text_clear()
|
||||
|
||||
# Enlever l'ancien chapitre
|
||||
scene.objects['Doc-'+scene.objects['Doc']['page_chap']].color = color_doc_chap
|
||||
@ -501,17 +496,37 @@ def chapter(cont):
|
||||
if scene.objects['Doc_chap-'+name_chap]['page_fct'] !="":
|
||||
name_fct = scene.objects['Doc_chap-'+name_chap]['page_fct']
|
||||
scene.objects['Doc_title']['Text'] = card_description[name_fct][0]
|
||||
scene.objects['Doc_text']['Text'] = card_description[name_fct][1]
|
||||
scene.objects['Doc_title'].setVisible(True, False)
|
||||
scene.objects['Doc_text'].setVisible(True, False)
|
||||
text_update(card_description[name_fct][1])
|
||||
else:
|
||||
scene.objects['Doc_title'].setVisible(False,True)
|
||||
scene.objects['Doc_text'].setVisible(False,True)
|
||||
text_hide()
|
||||
else:
|
||||
scene.objects['Doc_title'].setVisible(False,True)
|
||||
scene.objects['Doc_text'].setVisible(False,True)
|
||||
text_hide()
|
||||
|
||||
def text_hide():
|
||||
for i in range (13):
|
||||
scene.objects['Doc_text-l'+str(i+1)].setVisible(False, False)
|
||||
|
||||
def text_clear():
|
||||
for i in range (13):
|
||||
scene.objects['Doc_text-l'+str(i+1)]['Text'] = ""
|
||||
|
||||
def text_update(text):
|
||||
lines = text.split("\n")
|
||||
for i in range (13):
|
||||
if i >= len(lines):
|
||||
scene.objects['Doc_text-l'+str(i+1)]['Text'] = ""
|
||||
scene.objects['Doc_text-l'+str(i+1)].setVisible(False, False)
|
||||
else:
|
||||
if len(lines[i]) ==0:
|
||||
scene.objects['Doc_text-l'+str(i+1)]['Text'] = ""
|
||||
scene.objects['Doc_text-l'+str(i+1)].setVisible(False, False)
|
||||
else:
|
||||
scene.objects['Doc_text-l'+str(i+1)]['Text'] = lines[i]
|
||||
scene.objects['Doc_text-l'+str(i+1)].setVisible(True, False)
|
||||
|
||||
|
||||
##
|
||||
# Afficher les details de la fonction à partir d'une carte
|
||||
##
|
||||
@ -523,7 +538,7 @@ def card (cont):
|
||||
name_chap = scene.objects['Doc']['page_chap']
|
||||
name_fct= obj.name[:-7]
|
||||
scene.objects['Doc_title']['Text'] = " "
|
||||
scene.objects['Doc_text']['Text'] = " "
|
||||
text_clear()
|
||||
|
||||
# Enlever l'ancienne carte
|
||||
if scene.objects['Doc_chap-'+name_chap]['page_fct'] !="":
|
||||
@ -544,9 +559,8 @@ def card (cont):
|
||||
scene.objects[name_fct+'-icon'].color = color_doc_activate
|
||||
scene.objects[name_fct+'-text'].color = color_doc_activate
|
||||
scene.objects['Doc_title']['Text'] = card_description[name_fct][0]
|
||||
scene.objects['Doc_text']['Text'] = card_description[name_fct][1]
|
||||
scene.objects['Doc_title'].setVisible(True, False)
|
||||
scene.objects['Doc_text'].setVisible(True, False)
|
||||
text_update(card_description[name_fct][1])
|
||||
|
||||
# URL Python
|
||||
if name_chap == "python":
|
||||
|
29
rp_map1.py
29
rp_map1.py
@ -45,11 +45,9 @@ missions_card=["mission_1-card", "mission_2-card", "mission_3-card", "mission_4-
|
||||
|
||||
# Mission 1
|
||||
mission_1_title="Mission 1\n Premiers pas"
|
||||
mission_1_text="\n \n Il faut aider Ropy à atteindre la case \n de l'objectif (à l'est de la station). \n"
|
||||
mission_1_text= mission_1_text +" -> Voir onglet Rover, page \"Avancer\" \n"
|
||||
mission_1_text= mission_1_text +" -> Voir onglet Rover, page \"Tourner\" \n\n"
|
||||
mission_1_text= mission_1_text +"Afin de visualiser le trajet, il faudra \n marquer les cases. \n"
|
||||
mission_1_text= mission_1_text +" -> Voir onglet Rover, page \"Baliser\" \n"
|
||||
mission_1_text="""\n\n Il faut aider Ropy à atteindre la case \n de l'objectif (à l'est de la station). \n
|
||||
-> Voir onglet Rover, page \"Avancer\" \n -> Voir onglet Rover,page \"Tourner\" \n\n
|
||||
Afin de visualiser le trajet, il faudra \n marquer les cases. \n -> Voir onglet Rover, page \"Baliser\""""
|
||||
mission_1_task = "- Atteindre l'objectif \n\n- Poser 6 balises \n minimum"
|
||||
mission_1_init=[-11.0,3.0, "e"] # Rover init position (x,y), orientation ("n|s|e|w")
|
||||
mission_1_aim=[-7.0,2.0] # Aim position (x,y)
|
||||
@ -59,8 +57,7 @@ missions_task.update({"1" : [mission_1_task]})
|
||||
|
||||
# Mission 2
|
||||
mission_2_title="Mission 2\n Ma première 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_text="""\n\n La case à atteindre est toujours la \n même (à l'est de la station).\n\n 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\"."""
|
||||
mission_2_task = "- Atteindre l'objectif \n\n- Poser 6 balises \n minimum\n\n- 40 lignes de code \n maximum\n\n- Définition de la \n fonction \n \"mrp_avancer()\""
|
||||
mission_2_init=[-11.0,3.0, "e"]
|
||||
mission_2_aim=[-7.0,2.0]
|
||||
@ -70,8 +67,8 @@ missions_task.update({"2" : [mission_2_task]})
|
||||
|
||||
# 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 \n utilisant une structure alternative. \n -> Voir onglet Python, page \"Si alors\" \n -> Voir onglet Rover, page \"Détecter\" \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
|
||||
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\""""
|
||||
mission_3_task = "- Utilisation de \n \"rp_detect()\" dans \n une structure \n alternative \"if\"."
|
||||
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é -> pas de de position objectif
|
||||
@ -81,9 +78,8 @@ missions_task.update({"3" : [mission_3_task]})
|
||||
|
||||
# Mission 4
|
||||
mission_4_title="Mission 4\n Partir au bout du monde"
|
||||
mission_4_text="\n \n Ropy est maintenant prêt pour \n l'aventure soit atteindre la case \n du nouvel objectif (loin, très loin ...). \n \n Pour un tel voyage, l'utilisation \n d'une boucle du type \"for\" s'impose. \n"
|
||||
mission_4_text= mission_4_text +" -> Voir onglet Python, page \"Boucle\" \n \n"
|
||||
mission_4_text= mission_4_text + " Dans un deuxième temps, il faut créer \n la fonction \"mrp_avancer_nbpas(pas)\"\n afin d'avancer d'un nombre de pas."
|
||||
mission_4_text="""\n\n Ropy est maintenant prêt pour \n l'aventure soit atteindre la case \n du nouvel objectif (loin, très loin ...). \n \n Pour un tel voyage, l'utilisation d'une\n boucle du type \"for\" s'impose.
|
||||
-> Voir onglet Python, page \"Boucle\" \n\n Dans un deuxième temps, il faut créer \n la fonction \"mrp_avancer_nbpas(pas)\"\n afin d'avancer d'un nombre de pas."""
|
||||
mission_4_task = "- Atteindre l'objectif \n\n- 40 lignes de code \n maximum\n\n- Utilisation de \n boucle \"for\" \n\n- En bonus : création \n de la fonction \"mrp_\n avancer_nbpas(pas)\""
|
||||
mission_4_init=[-7.0,4.0, "e"]
|
||||
mission_4_aim=[12.0,9.0]
|
||||
@ -93,10 +89,8 @@ missions_task.update({"4" : [mission_4_task]})
|
||||
|
||||
# Mission 5
|
||||
mission_5_title="Mission 5\n Faire face à l'inconnu"
|
||||
mission_5_text="\n \n La case à atteindre est toujours la \n même, mais le lieu de départ change \n à chaque fois. \n \n"
|
||||
mission_5_text= mission_5_text +" Pour pallier à l\'aléatoire, vous \n utiliserez les pentes comme obstacle. \n"
|
||||
mission_5_text= mission_5_text +" Il faut alors créer une fonction \n avec une boucle \"while\" (tant que) \n qui permet d'avancer jusqu'à un \n obstacle :"
|
||||
mission_5_text= mission_5_text +" \"mrp_avancer_mur()\". \n \n \n"
|
||||
mission_5_text="""\n\n La case à atteindre est toujours la \n même, mais le lieu de départ change \n à chaque fois. \n\n Pour pallier à l\'aléatoire, vous \n utiliserez les pentes comme obstacle. \n
|
||||
Il faut alors créer une fonction \n avec une boucle \"while\" (tant que) \n qui permet d'avancer jusqu'à un \n obstacle : \"mrp_avancer_mur()\"."""
|
||||
mission_5_task = "- Atteindre l'objectif \n\n- 40 lignes de code \n maximum\n\n- Utilisation de \n boucle \"while\" \n\n- En bonus : création \n de la fonction \"mrp_\n avancer_mur()\""
|
||||
mission_5_init=[0.0,0.0, "e"] # Position aléatoire tourné vers l'est -> défini dans le reset
|
||||
mission_5_aim=[12.0,9.0]
|
||||
@ -106,8 +100,7 @@ missions_task.update({"5" : [mission_5_task]})
|
||||
|
||||
# Mission 6
|
||||
mission_6_title="Mission 6\n Se rendre utile"
|
||||
mission_6_text="\n \n Une zone du terrain doit être explorée.\n Il faut procéder à des carottages afin \n d'analyser la roche. \n\n"
|
||||
mission_6_text= mission_6_text + " Les lieux de forage (affichés ici en \n permance) sont définis de manière \n aléatoire (encore !), pour les \n réaliser, Ropy doit donc passer sur \n toutes les cases de la zone. \n\n\n\n\n\n\n"
|
||||
mission_6_text="""\n\n Une zone du terrain doit être explorée.\n Il faut procéder à des carottages afin \n d'analyser la roche. \n\n Les lieux de forage (affichés ici en \n permance) sont définis de manière \n aléatoire (encore !), pour les \n réaliser, Ropy doit donc passer sur \n toutes les cases de la zone."""
|
||||
mission_6_task = "- Passer sur les 10 \n lieux de forage"
|
||||
mission_6_init=[0.0,0.0, "e"] # Position aléatoire tourné vers l'est -> défini dans le reset
|
||||
mission_6_aim=[100.0,100.0] # Aim caché -> ramassage de pierre
|
||||
|
Loading…
Reference in New Issue
Block a user