mirror of
https://forge.apps.education.fr/blender-edutech/ropy.git
synced 2024-01-27 08:23:20 +01:00
Ajout de la liste des taches
This commit is contained in:
parent
39d2183fd3
commit
8de01c53ac
BIN
ropy-22.blend
Normal file
BIN
ropy-22.blend
Normal file
Binary file not shown.
195
rp.py
195
rp.py
@ -76,6 +76,11 @@ ACTIVATE = bge.logic.KX_INPUT_ACTIVE
|
|||||||
# User interface : texte info et compteurs
|
# User interface : texte info et compteurs
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
color_text = (0, 0, 0, 1) # Noir
|
||||||
|
color_text_red = (0.799, 0.031, 0.038, 1)
|
||||||
|
color_text_orange = (0.799, 0.176, 0.054, 1)
|
||||||
|
color_text_yellow = (0.799, 0.617, 0.021, 1)
|
||||||
|
|
||||||
##
|
##
|
||||||
# Mise à jour de l'affichage des compteurs
|
# Mise à jour de l'affichage des compteurs
|
||||||
##
|
##
|
||||||
@ -85,6 +90,19 @@ def points_maj (cont):
|
|||||||
# Step
|
# Step
|
||||||
if scene.objects['Points-Step-text']['Text']!= str(scene.objects['Points']['step']):
|
if scene.objects['Points-Step-text']['Text']!= str(scene.objects['Points']['step']):
|
||||||
scene.objects['Points-Step-text']['Text']=str(scene.objects['Points']['step'])
|
scene.objects['Points-Step-text']['Text']=str(scene.objects['Points']['step'])
|
||||||
|
if scene.objects['Points']['upgrade_battery']:
|
||||||
|
scene.objects['Points']['battery'] = round(100*(1 - (scene.objects['Points']['step']/200)))
|
||||||
|
else:
|
||||||
|
scene.objects['Points']['battery'] = round(100*(1 - (scene.objects['Points']['step']/20)))
|
||||||
|
if scene.objects['Points']['battery'] <=10:
|
||||||
|
scene.objects['Points-Battery'].color = color_text_red
|
||||||
|
scene.objects['Points-Battery-text'].color = color_text_red
|
||||||
|
if scene.objects['Points']['battery'] <=0:
|
||||||
|
scene.objects['Points-Battery-text']['Text']="0%"
|
||||||
|
print ("Plus de batterie !")
|
||||||
|
scene.objects['Rover']['stop'] = True
|
||||||
|
else:
|
||||||
|
scene.objects['Points-Battery-text']['Text']=str(scene.objects['Points']['battery'])+"%"
|
||||||
|
|
||||||
# Level
|
# Level
|
||||||
if scene.objects['Points-Level-text']['Text']!=str(scene.objects['Points']['level']):
|
if scene.objects['Points-Level-text']['Text']!=str(scene.objects['Points']['level']):
|
||||||
@ -103,7 +121,7 @@ def points_maj (cont):
|
|||||||
|
|
||||||
# Position du Rover
|
# Position du Rover
|
||||||
obj=scene.objects['Rover']
|
obj=scene.objects['Rover']
|
||||||
obj['position']=str(obj.worldPosition.x)+","+str(obj.worldPosition.y)+","+str(obj.worldPosition.z)
|
obj['position']=str(round(obj.worldPosition.x,3))+","+str(round(obj.worldPosition.y,3))+","+str(round(obj.worldPosition.z,3))
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Terrain
|
# Terrain
|
||||||
@ -180,7 +198,7 @@ def terrain_run ():
|
|||||||
scene.objects['Pause'].setVisible(False,False)
|
scene.objects['Pause'].setVisible(False,False)
|
||||||
scene.objects['Pause'].suspendPhysics()
|
scene.objects['Pause'].suspendPhysics()
|
||||||
scene.objects['Pause-Hl'].setVisible(False,False)
|
scene.objects['Pause-Hl'].setVisible(False,False)
|
||||||
scene.objects['Run']. restorePhysics()
|
scene.objects['Run'].restorePhysics()
|
||||||
scene.objects['Run-Hl'].setVisible(True,False)
|
scene.objects['Run-Hl'].setVisible(True,False)
|
||||||
|
|
||||||
# Run
|
# Run
|
||||||
@ -234,7 +252,7 @@ def terrain_end (cont):
|
|||||||
scene.objects['Pause'].suspendPhysics()
|
scene.objects['Pause'].suspendPhysics()
|
||||||
scene.objects['Pause-Hl'].setVisible(False,False)
|
scene.objects['Pause-Hl'].setVisible(False,False)
|
||||||
scene.objects['Run'].setVisible(True,False)
|
scene.objects['Run'].setVisible(True,False)
|
||||||
scene.objects['Run']. restorePhysics()
|
scene.objects['Run'].restorePhysics()
|
||||||
|
|
||||||
##
|
##
|
||||||
# Vitesse du jeu
|
# Vitesse du jeu
|
||||||
@ -305,7 +323,7 @@ def sound_set ():
|
|||||||
scene.objects['NoSound-cmd'].suspendPhysics()
|
scene.objects['NoSound-cmd'].suspendPhysics()
|
||||||
scene.objects['NoSound-cmd'].setVisible(False,False)
|
scene.objects['NoSound-cmd'].setVisible(False,False)
|
||||||
scene.objects['NoSound-cmd-Hl'].setVisible(False,False)
|
scene.objects['NoSound-cmd-Hl'].setVisible(False,False)
|
||||||
scene.objects['Sound-cmd']. restorePhysics()
|
scene.objects['Sound-cmd'].restorePhysics()
|
||||||
scene.objects['Sound-cmd-Hl'].setVisible(True,False)
|
scene.objects['Sound-cmd-Hl'].setVisible(True,False)
|
||||||
scene.objects['Commands']['sound']=True
|
scene.objects['Commands']['sound']=True
|
||||||
# scene.objects['Cmd-text']['Text']= "Mute"
|
# scene.objects['Cmd-text']['Text']= "Mute"
|
||||||
@ -322,7 +340,7 @@ def sound_unset ():
|
|||||||
scene.objects['Sound-cmd'].suspendPhysics()
|
scene.objects['Sound-cmd'].suspendPhysics()
|
||||||
scene.objects['Sound-cmd'].setVisible(False,False)
|
scene.objects['Sound-cmd'].setVisible(False,False)
|
||||||
scene.objects['Sound-cmd-Hl'].setVisible(False,False)
|
scene.objects['Sound-cmd-Hl'].setVisible(False,False)
|
||||||
scene.objects['NoSound-cmd']. restorePhysics()
|
scene.objects['NoSound-cmd'].restorePhysics()
|
||||||
scene.objects['NoSound-cmd-Hl'].setVisible(True,False)
|
scene.objects['NoSound-cmd-Hl'].setVisible(True,False)
|
||||||
scene.objects['Commands']['sound']=False
|
scene.objects['Commands']['sound']=False
|
||||||
# scene.objects['Cmd-text']['Text']= "Unmute"
|
# scene.objects['Cmd-text']['Text']= "Unmute"
|
||||||
@ -356,6 +374,10 @@ def cmd_init():
|
|||||||
scene.objects['Stop-Hl'].setVisible(False,False)
|
scene.objects['Stop-Hl'].setVisible(False,False)
|
||||||
scene.objects['Aim-cmd-Hl'].setVisible(False,False)
|
scene.objects['Aim-cmd-Hl'].setVisible(False,False)
|
||||||
scene.objects['Doc-cmd-Hl'].setVisible(False,False)
|
scene.objects['Doc-cmd-Hl'].setVisible(False,False)
|
||||||
|
scene.objects['Task-cmd-Hl'].setVisible(False,False)
|
||||||
|
scene.objects['Task_close-cmd'].setVisible(False,False)
|
||||||
|
scene.objects['Task_close-cmd'].suspendPhysics()
|
||||||
|
scene.objects['Task_close-cmd-Hl'].setVisible(False,False)
|
||||||
scene.objects['Store-cmd-Hl'].setVisible(False,False)
|
scene.objects['Store-cmd-Hl'].setVisible(False,False)
|
||||||
scene.objects['ResetView-Hl'].setVisible(False,False)
|
scene.objects['ResetView-Hl'].setVisible(False,False)
|
||||||
scene.objects['About-cmd-Hl'].setVisible(False,False)
|
scene.objects['About-cmd-Hl'].setVisible(False,False)
|
||||||
@ -420,11 +442,12 @@ def cmd_init():
|
|||||||
upgrade_maj()
|
upgrade_maj()
|
||||||
|
|
||||||
# Windows
|
# Windows
|
||||||
windows=("Doc", "Doc_chap-general", "Doc_chap-missions", "Doc_chap-rover", "Doc_chap-python", "About")
|
windows=("Doc", "Doc_chap-general", "Doc_chap-missions", "Doc_chap-rover", "Doc_chap-python", "About", "Task")
|
||||||
for window in windows:
|
for window in windows:
|
||||||
scene.objects[window].setVisible(False,True)
|
scene.objects[window].setVisible(False,True)
|
||||||
rp_doc.init()
|
rp_doc.init()
|
||||||
rp_store.init()
|
rp_store.init()
|
||||||
|
scene.objects['Task'].worldPosition = [42.6047, -2.09252, 2.99685] # Panel task
|
||||||
|
|
||||||
##
|
##
|
||||||
# Highlight des commandes
|
# Highlight des commandes
|
||||||
@ -461,6 +484,8 @@ def cmd_hl(cont):
|
|||||||
"Aim-cmd":"Afficher/cacher l'objectif",
|
"Aim-cmd":"Afficher/cacher l'objectif",
|
||||||
"Doc-cmd":"Documentation",
|
"Doc-cmd":"Documentation",
|
||||||
"Store-cmd":"Magasin",
|
"Store-cmd":"Magasin",
|
||||||
|
"Task-cmd":"Liste des tâches",
|
||||||
|
"Task_close-cmd":"Fermer la liste des tâches",
|
||||||
"ResetView": "Reset de la vue (Touche Début)",
|
"ResetView": "Reset de la vue (Touche Début)",
|
||||||
"About-cmd": "A propos",
|
"About-cmd": "A propos",
|
||||||
"Speed_down": "Moins vite (-)",
|
"Speed_down": "Moins vite (-)",
|
||||||
@ -485,7 +510,7 @@ def cmd_hl(cont):
|
|||||||
if cont.sensors['MO'].status == JUST_RELEASED and (scene.objects['Terrain']['manip_mode']==0 or scene.objects['Terrain']['manip_mode']==9):
|
if cont.sensors['MO'].status == JUST_RELEASED and (scene.objects['Terrain']['manip_mode']==0 or scene.objects['Terrain']['manip_mode']==9):
|
||||||
scene.objects['Cmd-text']['Text']= ""
|
scene.objects['Cmd-text']['Text']= ""
|
||||||
scene.objects['Cmd-text'].setVisible(False,False)
|
scene.objects['Cmd-text'].setVisible(False,False)
|
||||||
if obj.name!="Run" and obj.name!="Pause" and obj.name!="Stop" and obj.name!="Sound-cmd" and obj.name!="NoSound-cmd" :
|
if obj.name!="Run" and obj.name!="Pause" and obj.name!="Stop" and obj.name!="Sound-cmd" and obj.name!="NoSound-cmd" and obj.name!="Task-cmd" and obj.name!="Task_close-cmd" :
|
||||||
scene.objects[obj.name+'-Hl'].setVisible(False,True)
|
scene.objects[obj.name+'-Hl'].setVisible(False,True)
|
||||||
obj.setVisible(True,True)
|
obj.setVisible(True,True)
|
||||||
|
|
||||||
@ -512,6 +537,20 @@ def cmd_hl(cont):
|
|||||||
scene.objects['Sound-cmd-Hl'].setVisible(False,False)
|
scene.objects['Sound-cmd-Hl'].setVisible(False,False)
|
||||||
scene.objects['Sound-cmd'].setVisible(True,False)
|
scene.objects['Sound-cmd'].setVisible(True,False)
|
||||||
|
|
||||||
|
# Task panel
|
||||||
|
if obj.name=="Task-cmd":
|
||||||
|
scene.objects['Task-cmd-Hl'].setVisible(False,True)
|
||||||
|
if scene.objects['Commands']['task']:
|
||||||
|
scene.objects['Task-cmd'].setVisible(False,True)
|
||||||
|
else:
|
||||||
|
scene.objects['Task-cmd'].setVisible(True,False)
|
||||||
|
if obj.name=="Task_close-cmd":
|
||||||
|
scene.objects['Task_close-cmd-Hl'].setVisible(False,True)
|
||||||
|
if scene.objects['Commands']['task']==False:
|
||||||
|
scene.objects['Task_close-cmd'].setVisible(False,True)
|
||||||
|
else:
|
||||||
|
scene.objects['Task_close-cmd'].setVisible(True,False)
|
||||||
|
|
||||||
##
|
##
|
||||||
# Click sur les commandes
|
# Click sur les commandes
|
||||||
##
|
##
|
||||||
@ -554,7 +593,11 @@ def cmd_click (cont):
|
|||||||
if obj.name=="Store-cmd":
|
if obj.name=="Store-cmd":
|
||||||
sound_play (snd_open)
|
sound_play (snd_open)
|
||||||
store_open ()
|
store_open ()
|
||||||
|
if obj.name=="Task-cmd":
|
||||||
|
sound_play (snd_open)
|
||||||
|
task_open ()
|
||||||
|
if obj.name=="Task_close-cmd":
|
||||||
|
task_close ()
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Gestion du clavier
|
# Gestion du clavier
|
||||||
@ -576,11 +619,19 @@ def mode(cont):
|
|||||||
|
|
||||||
# Touche ESC
|
# Touche ESC
|
||||||
if JUST_ACTIVATED in keyboard.inputs[bge.events.ESCKEY].queue:
|
if JUST_ACTIVATED in keyboard.inputs[bge.events.ESCKEY].queue:
|
||||||
|
|
||||||
# Fenêtres modales
|
# Fenêtres modales
|
||||||
if scene.objects['Terrain']['manip_mode']==9:
|
if scene.objects['Terrain']['manip_mode']==9: # About
|
||||||
if scene.objects['About'].visible:
|
if scene.objects['About'].visible:
|
||||||
about_close()
|
about_close()
|
||||||
return
|
return
|
||||||
|
elif scene.objects['Terrain']['manip_mode']==8: # Doc et store
|
||||||
|
if scene.objects['Doc'].visible:
|
||||||
|
tablet_close()
|
||||||
|
return
|
||||||
|
if scene.objects['Store'].visible:
|
||||||
|
store_close()
|
||||||
|
return
|
||||||
else: # Sortir du jeu
|
else: # Sortir du jeu
|
||||||
terrain_stop ()
|
terrain_stop ()
|
||||||
|
|
||||||
@ -944,6 +995,22 @@ def tablet_close ():
|
|||||||
scene.objects['Speed_down-Hl'].setVisible(False,False)
|
scene.objects['Speed_down-Hl'].setVisible(False,False)
|
||||||
scene.objects['Cmd-text'].setVisible(False,False)
|
scene.objects['Cmd-text'].setVisible(False,False)
|
||||||
|
|
||||||
|
# Task panel
|
||||||
|
if scene.objects['Commands']['task']:
|
||||||
|
scene.objects['Task-cmd'].setVisible(False,True)
|
||||||
|
scene.objects['Task-cmd'].suspendPhysics()
|
||||||
|
scene.objects['Task-cmd-Hl'].setVisible(False,True)
|
||||||
|
scene.objects['Task_close-cmd'].setVisible(True,True)
|
||||||
|
scene.objects['Task_close-cmd'].restorePhysics()
|
||||||
|
scene.objects['Task_close-cmd-Hl'].setVisible(False,True)
|
||||||
|
else:
|
||||||
|
scene.objects['Task_close-cmd'].setVisible(False,True)
|
||||||
|
scene.objects['Task_close-cmd'].suspendPhysics()
|
||||||
|
scene.objects['Task_close-cmd-Hl'].setVisible(False,True)
|
||||||
|
scene.objects['Task-cmd'].setVisible(True,True)
|
||||||
|
scene.objects['Task-cmd'].restorePhysics()
|
||||||
|
scene.objects['Task-cmd-Hl'].setVisible(False,True)
|
||||||
|
|
||||||
# Camera
|
# Camera
|
||||||
scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['current_lx']
|
scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['current_lx']
|
||||||
scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['current_ly']
|
scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['current_ly']
|
||||||
@ -952,6 +1019,7 @@ def tablet_close ():
|
|||||||
# Reset si changement de mission
|
# Reset si changement de mission
|
||||||
if scene.objects['Points']['mission_init']!= scene.objects['Points']['mission']:
|
if scene.objects['Points']['mission_init']!= scene.objects['Points']['mission']:
|
||||||
terrain_stop ()
|
terrain_stop ()
|
||||||
|
rp_map.task()
|
||||||
if scene.objects['Grid-u'].visible:
|
if scene.objects['Grid-u'].visible:
|
||||||
rp_map.aim_show()
|
rp_map.aim_show()
|
||||||
scene.objects['Points']['mission_init'] = scene.objects['Points']['mission']
|
scene.objects['Points']['mission_init'] = scene.objects['Points']['mission']
|
||||||
@ -965,6 +1033,96 @@ def tablet_close_click(cont):
|
|||||||
sound_play (snd_close)
|
sound_play (snd_close)
|
||||||
tablet_close()
|
tablet_close()
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Liste des tâches
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
##
|
||||||
|
# Allumer la tablette des tâches
|
||||||
|
##
|
||||||
|
|
||||||
|
def task_open ():
|
||||||
|
scene.objects['Commands']['task']=True
|
||||||
|
scene.objects['Task-cmd'].setVisible(False,True)
|
||||||
|
scene.objects['Task-cmd'].suspendPhysics()
|
||||||
|
scene.objects['Task-cmd-Hl'].setVisible(False,True)
|
||||||
|
scene.objects['Task'].setVisible(True,True)
|
||||||
|
scene.objects['Task']['timer'] = 0
|
||||||
|
scene.objects['Task']['anim_open'] = True
|
||||||
|
rp_map.task()
|
||||||
|
|
||||||
|
def task_open_anim():
|
||||||
|
x0_cam=0.005783
|
||||||
|
y0_cam=-26.4403
|
||||||
|
z0_cam=20.2232
|
||||||
|
x_cam=scene.objects['Camera'].worldPosition.x
|
||||||
|
y_cam=scene.objects['Camera'].worldPosition.y
|
||||||
|
z_cam=scene.objects['Camera'].worldPosition.z
|
||||||
|
resol=50
|
||||||
|
x0=0.291678-x0_cam+x_cam
|
||||||
|
y0 =-25.9416-y0_cam+y_cam
|
||||||
|
z0 = 19.793-z0_cam+z_cam
|
||||||
|
x1 = 0.201271-x0_cam+x_cam
|
||||||
|
y1 =-25.9416-y0_cam+y_cam
|
||||||
|
z1 = 19.793-z0_cam+z_cam
|
||||||
|
xi = x0+((x1-x0)/resol)*scene.objects['Task']['timer']
|
||||||
|
yi = y0+((y1-y0)/resol)*scene.objects['Task']['timer']
|
||||||
|
zi = z0+((z1-z0)/resol)*scene.objects['Task']['timer']
|
||||||
|
scene.objects['Task'].worldPosition = [xi, yi, zi]
|
||||||
|
scene.objects['Task']['timer']+=1
|
||||||
|
if scene.objects['Task']['timer']== resol:
|
||||||
|
scene.objects['Task']['anim_open'] = False
|
||||||
|
scene.objects['Task_close-cmd'].setVisible(True,True)
|
||||||
|
scene.objects['Task_close-cmd-Hl'].setVisible(False,True)
|
||||||
|
scene.objects['Task_close-cmd'].restorePhysics()
|
||||||
|
|
||||||
|
##
|
||||||
|
# Allumer la tablette des tâches
|
||||||
|
##
|
||||||
|
|
||||||
|
def task_close ():
|
||||||
|
scene.objects['Commands']['task']=False
|
||||||
|
scene.objects['Task_close-cmd'].setVisible(False,True)
|
||||||
|
scene.objects['Task_close-cmd'].suspendPhysics()
|
||||||
|
scene.objects['Task_close-cmd-Hl'].setVisible(False,True)
|
||||||
|
scene.objects['Task']['timer'] = 0
|
||||||
|
scene.objects['Task']['anim_close'] = True
|
||||||
|
|
||||||
|
def task_close_anim():
|
||||||
|
x0_cam=0.005783
|
||||||
|
y0_cam=-26.4403
|
||||||
|
z0_cam=20.2232
|
||||||
|
x_cam=scene.objects['Camera'].worldPosition.x
|
||||||
|
y_cam=scene.objects['Camera'].worldPosition.y
|
||||||
|
z_cam=scene.objects['Camera'].worldPosition.z
|
||||||
|
resol=50
|
||||||
|
x0 = 0.201271-x0_cam+x_cam
|
||||||
|
y0 =-25.9416-y0_cam+y_cam
|
||||||
|
z0 = 19.793-z0_cam+z_cam
|
||||||
|
x1=0.291678-x0_cam+x_cam
|
||||||
|
y1 =-25.9416-y0_cam+y_cam
|
||||||
|
z1 = 19.793-z0_cam+z_cam
|
||||||
|
xi = x0+((x1-x0)/resol)*scene.objects['Task']['timer']
|
||||||
|
yi = y0+((y1-y0)/resol)*scene.objects['Task']['timer']
|
||||||
|
zi = z0+((z1-z0)/resol)*scene.objects['Task']['timer']
|
||||||
|
scene.objects['Task'].worldPosition = [xi, yi, zi]
|
||||||
|
scene.objects['Task']['timer']+=1
|
||||||
|
if scene.objects['Task']['timer']== resol:
|
||||||
|
scene.objects['Task']['anim_close'] = False
|
||||||
|
scene.objects['Task'].setVisible(False,True)
|
||||||
|
scene.objects['Task-cmd'].setVisible(True,True)
|
||||||
|
scene.objects['Task-cmd-Hl'].setVisible(False,True)
|
||||||
|
scene.objects['Task-cmd'].restorePhysics()
|
||||||
|
|
||||||
|
##
|
||||||
|
# Clic pour fermer la tablette des tâches
|
||||||
|
##
|
||||||
|
|
||||||
|
def task_close_click(cont):
|
||||||
|
if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive :
|
||||||
|
sound_play (snd_close)
|
||||||
|
task_close()
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Store
|
# Store
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@ -1028,8 +1186,6 @@ def store_open ():
|
|||||||
terrain_grid()
|
terrain_grid()
|
||||||
else:
|
else:
|
||||||
scene.objects['Store']['Grid_visible'] = False
|
scene.objects['Store']['Grid_visible'] = False
|
||||||
|
|
||||||
|
|
||||||
rp_store.open()
|
rp_store.open()
|
||||||
|
|
||||||
##
|
##
|
||||||
@ -1074,6 +1230,23 @@ def store_close():
|
|||||||
scene.objects['Speed_down-Hl'].setVisible(False,False)
|
scene.objects['Speed_down-Hl'].setVisible(False,False)
|
||||||
scene.objects['Cmd-text'].setVisible(False,False)
|
scene.objects['Cmd-text'].setVisible(False,False)
|
||||||
|
|
||||||
|
# Task panel
|
||||||
|
if scene.objects['Commands']['task']:
|
||||||
|
scene.objects['Task-cmd'].setVisible(False,True)
|
||||||
|
scene.objects['Task-cmd'].suspendPhysics()
|
||||||
|
scene.objects['Task-cmd-Hl'].setVisible(False,True)
|
||||||
|
scene.objects['Task_close-cmd'].setVisible(True,True)
|
||||||
|
scene.objects['Task_close-cmd'].restorePhysics()
|
||||||
|
scene.objects['Task_close-cmd-Hl'].setVisible(False,True)
|
||||||
|
else:
|
||||||
|
scene.objects['Task_close-cmd'].setVisible(False,True)
|
||||||
|
scene.objects['Task_close-cmd'].suspendPhysics()
|
||||||
|
scene.objects['Task_close-cmd-Hl'].setVisible(False,True)
|
||||||
|
scene.objects['Task-cmd'].setVisible(True,True)
|
||||||
|
scene.objects['Task-cmd'].restorePhysics()
|
||||||
|
scene.objects['Task-cmd-Hl'].setVisible(False,True)
|
||||||
|
|
||||||
|
|
||||||
# Maj de l'interface
|
# Maj de l'interface
|
||||||
upgrade_maj()
|
upgrade_maj()
|
||||||
|
|
||||||
|
@ -25,6 +25,8 @@ def mrp_avancer():
|
|||||||
if rp_detect()==False:
|
if rp_detect()==False:
|
||||||
rp_avancer()
|
rp_avancer()
|
||||||
rp_marquer()
|
rp_marquer()
|
||||||
|
print ("Nb de balises posées : ", str(rp_balise()))
|
||||||
|
print ("Niveau batterie : ", str(rp_batterie()))
|
||||||
|
|
||||||
def mrp_avancer_nbpas(pas):
|
def mrp_avancer_nbpas(pas):
|
||||||
for i in range (pas):
|
for i in range (pas):
|
||||||
@ -45,12 +47,10 @@ def commandes():
|
|||||||
# mrp_avancer_mur()
|
# mrp_avancer_mur()
|
||||||
# rp_gauche()
|
# rp_gauche()
|
||||||
|
|
||||||
# mrp_avancer()
|
# rp_vitesse (8)
|
||||||
# rp_gauche()
|
|
||||||
# mrp_avancer()
|
|
||||||
|
|
||||||
mrp_avancer_mur()
|
mrp_avancer_mur()
|
||||||
rp_gauche()
|
rp_gauche()
|
||||||
|
# rp_vitesse (1)
|
||||||
mrp_avancer_mur()
|
mrp_avancer_mur()
|
||||||
|
|
||||||
rp_fin()
|
rp_fin()
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
<speed>4.0</speed>
|
<speed>4.0</speed>
|
||||||
<sound>False</sound>
|
<sound>False</sound>
|
||||||
<cam>
|
<cam>
|
||||||
<worldPosition.x>-1.3732191324234009</worldPosition.x>
|
<worldPosition.x>0.0057830810546875</worldPosition.x>
|
||||||
<worldPosition.y>-44.52867889404297</worldPosition.y>
|
<worldPosition.y>-26.440298080444336</worldPosition.y>
|
||||||
<worldPosition.z>36.26533126831055</worldPosition.z>
|
<worldPosition.z>20.22315788269043</worldPosition.z>
|
||||||
</cam>
|
</cam>
|
||||||
</config>
|
</config>
|
||||||
<mission>
|
<mission>
|
||||||
@ -15,7 +15,7 @@
|
|||||||
<upgrade>
|
<upgrade>
|
||||||
<battery>True</battery>
|
<battery>True</battery>
|
||||||
<beacon>True</beacon>
|
<beacon>True</beacon>
|
||||||
<paint>False</paint>
|
<paint>True</paint>
|
||||||
<speed>True</speed>
|
<speed>True</speed>
|
||||||
</upgrade>
|
</upgrade>
|
||||||
</data>
|
</data>
|
67
rp_doc.py
67
rp_doc.py
@ -43,7 +43,7 @@ missions_card=rp_map1.get_missions_card()
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
rover_card=["avancer-card", "tourner-card", "baliser-card", "detecter-card", "radar-card"]
|
rover_card=["avancer-card", "tourner-card", "baliser-card", "detecter-card", "radar-card"]
|
||||||
rover_card=rover_card+["vitesse-card", "peinture-card", "batterie-card", "balise-card"]
|
rover_card=rover_card+["speed-card", "paint-card", "battery-card", "beacon-card"]
|
||||||
|
|
||||||
# Avancer
|
# Avancer
|
||||||
rp_avancer_title="Avancer"
|
rp_avancer_title="Avancer"
|
||||||
@ -76,29 +76,29 @@ rp_radar_text="FIXME"
|
|||||||
rp_radar_type="standard"
|
rp_radar_type="standard"
|
||||||
card_description.update({"radar-card" : [rp_radar_title, rp_radar_text, rp_radar_type]})
|
card_description.update({"radar-card" : [rp_radar_title, rp_radar_text, rp_radar_type]})
|
||||||
|
|
||||||
# Vitesse
|
# Speed - Vitesse
|
||||||
rp_vitesse_title="Vitesse"
|
rp_speed_title="Vitesse"
|
||||||
rp_vitesse_text="FIXME"
|
rp_speed_text="FIXME"
|
||||||
rp_vitesse_type="upgrade"
|
rp_speed_type="upgrade"
|
||||||
card_description.update({"vitesse-card" : [rp_vitesse_title, rp_vitesse_text, rp_vitesse_type]})
|
card_description.update({"speed-card" : [rp_speed_title, rp_speed_text, rp_speed_type]})
|
||||||
|
|
||||||
# Peinture
|
# Paint - Peinture
|
||||||
rp_peinture_title="Peinture"
|
rp_paint_title="Peinture"
|
||||||
rp_peinture_text="FIXME"
|
rp_paint_text="FIXME"
|
||||||
rp_peinture_type="upgrade"
|
rp_paint_type="upgrade"
|
||||||
card_description.update({"peinture-card" : [rp_peinture_title, rp_peinture_text, rp_peinture_type]})
|
card_description.update({"paint-card" : [rp_paint_title, rp_paint_text, rp_paint_type]})
|
||||||
|
|
||||||
# Batterie +
|
# Battery + - Batterie +
|
||||||
rp_batterie_title="Batterie +"
|
rp_battery_title="Batterie +"
|
||||||
rp_batterie_text="FIXME"
|
rp_battery_text="FIXME"
|
||||||
rp_batterie_type="upgrade"
|
rp_battery_type="upgrade"
|
||||||
card_description.update({"batterie-card" : [rp_batterie_title, rp_batterie_text, rp_batterie_type]})
|
card_description.update({"battery-card" : [rp_battery_title, rp_battery_text, rp_battery_type]})
|
||||||
|
|
||||||
# Balise +
|
# Beacon + - Balise +
|
||||||
rp_balise_title="Balise +"
|
rp_beacon_title="Balise +"
|
||||||
rp_balise_text="FIXME"
|
rp_beacon_text="FIXME"
|
||||||
rp_balise_type="upgrade"
|
rp_beacon_type="upgrade"
|
||||||
card_description.update({"balise-card" : [rp_balise_title, rp_balise_text, rp_balise_type]})
|
card_description.update({"beacon-card" : [rp_beacon_title, rp_beacon_text, rp_beacon_type]})
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Documentation Python
|
# Documentation Python
|
||||||
@ -111,7 +111,7 @@ python_card=["fonction-card", "alternative-card", "boucle-card"]
|
|||||||
rp_fonction_title="Fonction"
|
rp_fonction_title="Fonction"
|
||||||
rp_fonction_text=" La définition d'une fonction se fait \n avec \"def\". La fonction peut \n renvoyer une valeur avec \"return\". \n \n"
|
rp_fonction_text=" La définition d'une fonction se fait \n avec \"def\". La fonction peut \n renvoyer une valeur avec \"return\". \n \n"
|
||||||
rp_fonction_text=rp_fonction_text + " def fonction_1 (arguments) : \n instruction_1 \n instruction_2 \n ....\n return valeurs_renvoyées \n\n"
|
rp_fonction_text=rp_fonction_text + " def fonction_1 (arguments) : \n instruction_1 \n instruction_2 \n ....\n return valeurs_renvoyées \n\n"
|
||||||
rp_fonction_text=rp_fonction_text + " Les arguments sont des données \n transmisent à la fonction."
|
rp_fonction_text=rp_fonction_text + " Les arguments sont des données \n transmises à la fonction."
|
||||||
card_description.update({"fonction-card" : [rp_fonction_title, rp_fonction_text]})
|
card_description.update({"fonction-card" : [rp_fonction_title, rp_fonction_text]})
|
||||||
|
|
||||||
# Alternative
|
# Alternative
|
||||||
@ -223,6 +223,17 @@ def open():
|
|||||||
else:
|
else:
|
||||||
scene.objects['Book_level_button'].setVisible(False,True)
|
scene.objects['Book_level_button'].setVisible(False,True)
|
||||||
|
|
||||||
|
# Upgrade
|
||||||
|
if name_chap == "rover":
|
||||||
|
upgrade_card=("battery", "beacon", "paint", "speed")
|
||||||
|
for i in range(len(upgrade_card)):
|
||||||
|
if scene.objects['Points']['upgrade_'+upgrade_card[i]]==True:
|
||||||
|
scene.objects[upgrade_card[i]+'-card'].setVisible(True,True)
|
||||||
|
scene.objects[upgrade_card[i]+'-card_colbox'].restorePhysics()
|
||||||
|
else:
|
||||||
|
scene.objects[upgrade_card[i]+'-card'].setVisible(False,True)
|
||||||
|
scene.objects[upgrade_card[i]+'-card_colbox'].suspendPhysics()
|
||||||
|
|
||||||
# Afficher le texte de la carte active
|
# Afficher le texte de la carte active
|
||||||
if name_chap != "general":
|
if name_chap != "general":
|
||||||
if scene.objects['Doc_chap-'+name_chap]['page_fct'] !="":
|
if scene.objects['Doc_chap-'+name_chap]['page_fct'] !="":
|
||||||
@ -361,6 +372,17 @@ def chapter(cont):
|
|||||||
else:
|
else:
|
||||||
scene.objects['Book_level_button'].setVisible(False,True)
|
scene.objects['Book_level_button'].setVisible(False,True)
|
||||||
|
|
||||||
|
# Upgrade
|
||||||
|
if name_chap == "rover":
|
||||||
|
upgrade_card=("battery", "beacon", "paint", "speed")
|
||||||
|
for i in range(len(upgrade_card)):
|
||||||
|
if scene.objects['Points']['upgrade_'+upgrade_card[i]]==True:
|
||||||
|
scene.objects[upgrade_card[i]+'-card'].setVisible(True,True)
|
||||||
|
scene.objects[upgrade_card[i]+'-card-colbox'].restorePhysics()
|
||||||
|
else:
|
||||||
|
scene.objects[upgrade_card[i]+'-card'].setVisible(False,True)
|
||||||
|
scene.objects[upgrade_card[i]+'-card-colbox'].suspendPhysics()
|
||||||
|
|
||||||
# Afficher le texte de la carte active
|
# Afficher le texte de la carte active
|
||||||
if name_chap != "general":
|
if name_chap != "general":
|
||||||
if scene.objects['Doc_chap-'+name_chap]['page_fct'] !="":
|
if scene.objects['Doc_chap-'+name_chap]['page_fct'] !="":
|
||||||
@ -435,7 +457,6 @@ def level_button (cont):
|
|||||||
scene.objects["mission_"+str(scene.objects['Points']['mission'])+"-card"].color = color_doc_fct
|
scene.objects["mission_"+str(scene.objects['Points']['mission'])+"-card"].color = color_doc_fct
|
||||||
scene.objects["mission_"+str(scene.objects['Points']['mission'])+"-card-icon"].color = color_doc_fct
|
scene.objects["mission_"+str(scene.objects['Points']['mission'])+"-card-icon"].color = color_doc_fct
|
||||||
scene.objects["mission_"+str(scene.objects['Points']['mission'])+"-card-text"].color = color_doc_fct
|
scene.objects["mission_"+str(scene.objects['Points']['mission'])+"-card-text"].color = color_doc_fct
|
||||||
print ("Sélectionner le niveau :", str(mission_select))
|
|
||||||
scene.objects['Points']['mission'] = mission_select
|
scene.objects['Points']['mission'] = mission_select
|
||||||
scene.objects['Points-Map-text']['Text']="Mission "+str(scene.objects['Points']['mission'])
|
scene.objects['Points-Map-text']['Text']="Mission "+str(scene.objects['Points']['mission'])
|
||||||
scene.objects['Book_mission']['Text'] = "Mission en cours : "+str(scene.objects['Points']['mission'])
|
scene.objects['Book_mission']['Text'] = "Mission en cours : "+str(scene.objects['Points']['mission'])
|
||||||
|
58
rp_lib.py
58
rp_lib.py
@ -202,7 +202,7 @@ def rp_avancer ():
|
|||||||
scene.objects['Points']['step'] +=1
|
scene.objects['Points']['step'] +=1
|
||||||
|
|
||||||
# Animation rapide
|
# Animation rapide
|
||||||
if scene.objects['Commands']['speed'] == 10 and scene.objects['Points']['step']> 2: # A tendance à planter sur les premiers mouvements en rapide + balisage
|
if scene.objects['Commands']['speed'] >= 10 and scene.objects['Points']['step']> 2: # A tendance à planter sur les premiers mouvements en rapide + balisage
|
||||||
x0 = obj.worldPosition.x
|
x0 = obj.worldPosition.x
|
||||||
y0 = obj.worldPosition.y
|
y0 = obj.worldPosition.y
|
||||||
z0 = obj.worldPosition.z
|
z0 = obj.worldPosition.z
|
||||||
@ -234,7 +234,7 @@ def rp_avancer ():
|
|||||||
# rp_tempo (0.1*step)
|
# rp_tempo (0.1*step)
|
||||||
|
|
||||||
# Animation
|
# Animation
|
||||||
if scene.objects['Commands']['speed'] != 10:
|
if scene.objects['Commands']['speed'] < 10:
|
||||||
start = 1
|
start = 1
|
||||||
end = 100
|
end = 100
|
||||||
layer = 0
|
layer = 0
|
||||||
@ -290,7 +290,7 @@ def rp_gauche ():
|
|||||||
step=math.pi/2 # Pas angulaire
|
step=math.pi/2 # Pas angulaire
|
||||||
|
|
||||||
# Animation rapide
|
# Animation rapide
|
||||||
if scene.objects['Commands']['speed'] == 10:
|
if scene.objects['Commands']['speed'] >= 10:
|
||||||
obj.applyRotation((0, 0, step), True)
|
obj.applyRotation((0, 0, step), True)
|
||||||
rp_tempo (0.1)
|
rp_tempo (0.1)
|
||||||
return True
|
return True
|
||||||
@ -336,7 +336,7 @@ def rp_droite ():
|
|||||||
step=math.pi/2 # Pas angulaire
|
step=math.pi/2 # Pas angulaire
|
||||||
|
|
||||||
# Rapide
|
# Rapide
|
||||||
if scene.objects['Commands']['speed'] == 10:
|
if scene.objects['Commands']['speed'] >= 10:
|
||||||
obj.applyRotation((0, 0, -step), True)
|
obj.applyRotation((0, 0, -step), True)
|
||||||
rp_tempo (0.1)
|
rp_tempo (0.1)
|
||||||
return True
|
return True
|
||||||
@ -491,6 +491,56 @@ def rp_radar ():
|
|||||||
print ("rp_radar")
|
print ("rp_radar")
|
||||||
# FIXME
|
# FIXME
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Rover fonction avancées (upgrade) élèves
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
##
|
||||||
|
# Peindre : station, rover, balise
|
||||||
|
##
|
||||||
|
|
||||||
|
# FIXME tout à définir
|
||||||
|
def rp_couleur (element, new_color):
|
||||||
|
if scene.objects['Points']['upgrade_paint']:
|
||||||
|
if (debug_mvt):
|
||||||
|
print ("Nouvelle couleur :", str(new_color),"->", element)
|
||||||
|
print ("Nouvelle couleur :", str(new_color),"->", element)
|
||||||
|
|
||||||
|
##
|
||||||
|
# Changer la vitesse
|
||||||
|
##
|
||||||
|
|
||||||
|
def rp_vitesse (new_speed):
|
||||||
|
if scene.objects['Points']['upgrade_speed']:
|
||||||
|
if new_speed is not None:
|
||||||
|
if (debug_mvt):
|
||||||
|
print ("Nouvelle vitesse :", new_speed)
|
||||||
|
scene.objects['Text_speed']['Text']=str(new_speed)
|
||||||
|
scene.objects['Commands']['speed']=new_speed
|
||||||
|
return scene.objects['Commands']['speed']
|
||||||
|
|
||||||
|
##
|
||||||
|
# Connaitre le nombre de balise posées
|
||||||
|
##
|
||||||
|
|
||||||
|
def rp_balise ():
|
||||||
|
if scene.objects['Points']['upgrade_beacon']:
|
||||||
|
for i in range (200):
|
||||||
|
if scene.objects["Beacon-"+str(i)]['activated']==False:
|
||||||
|
break
|
||||||
|
if (debug_mvt):
|
||||||
|
print ("Nombre de balises posées :", i)
|
||||||
|
return i
|
||||||
|
|
||||||
|
##
|
||||||
|
# Connaitre la charge de la batterie
|
||||||
|
##
|
||||||
|
|
||||||
|
def rp_batterie ():
|
||||||
|
if scene.objects['Points']['upgrade_battery']:
|
||||||
|
if (debug_mvt):
|
||||||
|
print ("Charge de la batterie :", scene.objects['Points']['battery'])
|
||||||
|
return scene.objects['Points']['battery']
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Colision
|
# Colision
|
||||||
|
44
rp_map1.py
44
rp_map1.py
@ -17,12 +17,19 @@ import os
|
|||||||
|
|
||||||
scene = bge.logic.getCurrentScene()
|
scene = bge.logic.getCurrentScene()
|
||||||
|
|
||||||
|
color_text = (0, 0, 0, 1) # Noir
|
||||||
|
color_text_red = (0.799, 0.031, 0.038, 1)
|
||||||
|
color_text_orange = (0.799, 0.176, 0.054, 1)
|
||||||
|
color_text_yellow = (0.799, 0.617, 0.021, 1)
|
||||||
|
color_text_white = (1, 1, 1, 1)
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Missions
|
# Missions
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
missions_card_description ={}
|
missions_card_description ={}
|
||||||
missions_conf ={}
|
missions_conf ={}
|
||||||
|
missions_task ={}
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Initialisation du niveau :
|
# Initialisation du niveau :
|
||||||
@ -44,37 +51,46 @@ 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 +" -> 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 +"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= mission_1_text +" -> Voir onglet Rover, page \"Baliser\" \n"
|
||||||
|
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_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)
|
mission_1_aim=[-7.0,2.0] # Aim position (x,y)
|
||||||
missions_card_description.update({"mission_1-card" : [mission_1_title, mission_1_text]})
|
missions_card_description.update({"mission_1-card" : [mission_1_title, mission_1_text]})
|
||||||
missions_conf.update({"1" : [mission_1_init, mission_1_aim]})
|
missions_conf.update({"1" : [mission_1_init, mission_1_aim]})
|
||||||
|
missions_task.update({"1" : [mission_1_task]})
|
||||||
|
|
||||||
# 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 La case à atteindre est toujours la \n même (à l'est de la station). \n \n"
|
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= 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_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_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]})
|
||||||
missions_conf.update({"2" : [mission_2_init, mission_2_aim]})
|
missions_conf.update({"2" : [mission_2_init, mission_2_aim]})
|
||||||
|
missions_task.update({"2" : [mission_2_task]})
|
||||||
|
|
||||||
# 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 \n utilisant 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_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_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
|
mission_3_aim=[100.0,100.0] # Aim caché -> pas de de position objectif
|
||||||
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]})
|
||||||
missions_conf.update({"3" : [mission_3_init, mission_3_aim]})
|
missions_conf.update({"3" : [mission_3_init, mission_3_aim]})
|
||||||
|
missions_task.update({"3" : [mission_3_task]})
|
||||||
|
|
||||||
# Mission 4
|
# Mission 4
|
||||||
mission_4_title="Mission 4\n Partir au bout du monde"
|
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="\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 \n \n \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_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_init=[-7.0,4.0, "e"]
|
||||||
mission_4_aim=[12.0,9.0]
|
mission_4_aim=[12.0,9.0]
|
||||||
missions_card_description.update({"mission_4-card" : [mission_4_title, mission_4_text]})
|
missions_card_description.update({"mission_4-card" : [mission_4_title, mission_4_text]})
|
||||||
missions_conf.update({"4" : [mission_4_init, mission_4_aim]})
|
missions_conf.update({"4" : [mission_4_init, mission_4_aim]})
|
||||||
|
missions_task.update({"4" : [mission_4_task]})
|
||||||
|
|
||||||
# Mission 5
|
# Mission 5
|
||||||
mission_5_title="Mission 5\n Faire face à l'inconnu"
|
mission_5_title="Mission 5\n Faire face à l'inconnu"
|
||||||
@ -82,30 +98,38 @@ mission_5_text="\n \n La case à atteindre est toujours la \n même, mais le lie
|
|||||||
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 +" 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 +" 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= mission_5_text +" \"mrp_avancer_mur()\". \n \n \n"
|
||||||
|
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_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]
|
mission_5_aim=[12.0,9.0]
|
||||||
missions_card_description.update({"mission_5-card" : [mission_5_title, mission_5_text]})
|
missions_card_description.update({"mission_5-card" : [mission_5_title, mission_5_text]})
|
||||||
missions_conf.update({"5" : [mission_5_init, mission_5_aim]})
|
missions_conf.update({"5" : [mission_5_init, mission_5_aim]})
|
||||||
|
missions_task.update({"5" : [mission_5_task]})
|
||||||
|
|
||||||
# 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 \n toutes 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 carottages afin d'analyser la \n roche. \n \n Les lieux de forage sont définis de \n manière 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_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_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é -> rammassage de pierre
|
mission_6_aim=[100.0,100.0] # Aim caché -> rammassage de pierre
|
||||||
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]})
|
||||||
missions_conf.update({"6" : [mission_6_init, mission_6_aim]})
|
missions_conf.update({"6" : [mission_6_init, mission_6_aim]})
|
||||||
|
missions_task.update({"6" : [mission_6_task]})
|
||||||
|
|
||||||
# Mission 7
|
# Mission 7
|
||||||
# mission_7_title="Mission 7\n FIXME"
|
# mission_7_title="Mission 7\n FIXME"
|
||||||
# mission_7_text="\n \n FIXME"
|
# mission_7_text="\n \n FIXME"
|
||||||
|
# mission_7_task = "FIXME"
|
||||||
# missions_card_description.update({"mission_7-card" : [mission_7_title, mission_7_text]})
|
# missions_card_description.update({"mission_7-card" : [mission_7_title, mission_7_text]})
|
||||||
# missions_conf.update({"7" : [mission_7_init, mission_7_aim]})
|
# missions_conf.update({"7" : [mission_7_init, mission_7_aim]})
|
||||||
|
# missions_task.update({"7" : [mission_7_task]})
|
||||||
|
|
||||||
# Mission 8
|
# Mission 8
|
||||||
# mission_8_title="Mission 8\n FIXME"
|
# mission_8_title="Mission 8\n FIXME"
|
||||||
# mission_8_text="\n \n FIXME"
|
# mission_8_text="\n \n FIXME"
|
||||||
|
# mission_8_task = "FIXME"
|
||||||
# missions_card_description.update({"mission_8-card" : [mission_8_title, mission_8_text]})
|
# missions_card_description.update({"mission_8-card" : [mission_8_title, mission_8_text]})
|
||||||
# missions_conf.update({"8" : [mission_8_init, mission_8_aim]})
|
# missions_conf.update({"8" : [mission_8_init, mission_8_aim]})
|
||||||
|
# missions_task.update({"8" : [mission_8_task]})
|
||||||
|
|
||||||
# Description des cartes missions
|
# Description des cartes missions
|
||||||
|
|
||||||
@ -160,6 +184,9 @@ def map_init():
|
|||||||
def map_reset():
|
def map_reset():
|
||||||
scene.objects['Points']['step']=0
|
scene.objects['Points']['step']=0
|
||||||
scene.objects['Points']['nbligne']=0
|
scene.objects['Points']['nbligne']=0
|
||||||
|
scene.objects['Points']['battery']=100
|
||||||
|
scene.objects['Points-Battery'].color = color_text_white
|
||||||
|
scene.objects['Points-Battery-text'].color = color_text
|
||||||
mission_init = missions_conf[str(scene.objects['Points']['mission'])][0]
|
mission_init = missions_conf[str(scene.objects['Points']['mission'])][0]
|
||||||
mission_aim = missions_conf[str(scene.objects['Points']['mission'])][1]
|
mission_aim = missions_conf[str(scene.objects['Points']['mission'])][1]
|
||||||
|
|
||||||
@ -245,6 +272,13 @@ def aim_hide():
|
|||||||
scene.objects['Aimzone-mission-6'].setVisible(False,True)
|
scene.objects['Aimzone-mission-6'].setVisible(False,True)
|
||||||
scene.objects['Initzone-mission-5'].setVisible(False,True)
|
scene.objects['Initzone-mission-5'].setVisible(False,True)
|
||||||
|
|
||||||
|
##
|
||||||
|
# Affichage des tâches
|
||||||
|
##
|
||||||
|
|
||||||
|
def task():
|
||||||
|
scene.objects['Task_text']['Text']=missions_task[str(scene.objects['Points']['mission'])][0]
|
||||||
|
|
||||||
##
|
##
|
||||||
# Validation de l'objectif atteint
|
# Validation de l'objectif atteint
|
||||||
##
|
##
|
||||||
@ -280,6 +314,10 @@ def objectif_control(x,y):
|
|||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
txt=["def mrp_avancer_nbpas"] # Présence de "def mrp_avancer_nbpas"
|
txt=["def mrp_avancer_nbpas"] # Présence de "def mrp_avancer_nbpas"
|
||||||
|
if rp_cmd_txtcount(txt, 1):
|
||||||
|
txt=["for" ] # Présence de "for i in range" 1x
|
||||||
|
if rp_cmd_txtcount(txt, 1):
|
||||||
|
txt=["in range" ]
|
||||||
if rp_cmd_txtcount(txt, 1):
|
if rp_cmd_txtcount(txt, 1):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -292,6 +330,8 @@ def objectif_control(x,y):
|
|||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
txt=["def mrp_avancer_mur():", "def mrp_avancer_mur() :", "def mrp_avancer_mur ():", "def mrp_avancer_mur () :"] # Présence de "def mrp_avancer_mur():"
|
txt=["def mrp_avancer_mur():", "def mrp_avancer_mur() :", "def mrp_avancer_mur ():", "def mrp_avancer_mur () :"] # Présence de "def mrp_avancer_mur():"
|
||||||
|
if rp_cmd_txtcount(txt, 1):
|
||||||
|
txt=["while" ] # Présence de "while" 1x
|
||||||
if rp_cmd_txtcount(txt, 1):
|
if rp_cmd_txtcount(txt, 1):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -96,6 +96,10 @@ def open2 (cont):
|
|||||||
thread_gostore_stop()
|
thread_gostore_stop()
|
||||||
obj['store-anim_end']=False
|
obj['store-anim_end']=False
|
||||||
|
|
||||||
|
# Pas arrivé au store, dommage !
|
||||||
|
if obj['stop']:
|
||||||
|
return False
|
||||||
|
|
||||||
# Affinage de la position
|
# Affinage de la position
|
||||||
obj.worldPosition.x = -9.75
|
obj.worldPosition.x = -9.75
|
||||||
obj.worldPosition.y = -4
|
obj.worldPosition.y = -4
|
||||||
@ -153,7 +157,6 @@ def open2 (cont):
|
|||||||
scene.objects['Store_upgrade-colbox'].suspendPhysics (True)
|
scene.objects['Store_upgrade-colbox'].suspendPhysics (True)
|
||||||
scene.objects['Store_text'].setVisible(False,True)
|
scene.objects['Store_text'].setVisible(False,True)
|
||||||
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# Animation du store
|
# Animation du store
|
||||||
##
|
##
|
||||||
@ -385,7 +388,6 @@ def rover_go_store():
|
|||||||
# Position de départ pour le debug
|
# Position de départ pour le debug
|
||||||
# obj.worldPosition.x=12
|
# obj.worldPosition.x=12
|
||||||
# obj.worldPosition.y=9
|
# obj.worldPosition.y=9
|
||||||
|
|
||||||
x0 = obj.worldPosition.x
|
x0 = obj.worldPosition.x
|
||||||
y0 = obj.worldPosition.y
|
y0 = obj.worldPosition.y
|
||||||
z0 = obj.worldPosition.z
|
z0 = obj.worldPosition.z
|
||||||
|
Loading…
Reference in New Issue
Block a user