Ajout de la grille, des cartes de la mission en cours, rp_avancer(), rp_gauche() et rp_droite()
This commit is contained in:
parent
f0a77c2a59
commit
52b760c946
BIN
ropy-07.blend
BIN
ropy-07.blend
Binary file not shown.
71
rp.py
71
rp.py
|
@ -103,13 +103,6 @@ def points_maj (cont):
|
|||
# Terrain
|
||||
###############################################################################
|
||||
|
||||
##
|
||||
# Mouse over du terrain
|
||||
##
|
||||
|
||||
def scn_terrain_mo (cont):
|
||||
pass
|
||||
|
||||
##
|
||||
# Initialisation lors du chargement du terrain
|
||||
##
|
||||
|
@ -242,6 +235,20 @@ def terrain_speed (obj):
|
|||
with open("rp_config.xml", "wb") as f:
|
||||
f.write(buffer_xml)
|
||||
|
||||
##
|
||||
# Grille
|
||||
##
|
||||
|
||||
def terrain_grid ():
|
||||
# for i in range (0, 1000, 1):
|
||||
# bpy.data.materials["Grid"].node_tree.nodes["Emission"].inputs[1].default_value =i*0.01
|
||||
if scene.objects['Grid-u'].visible:
|
||||
scene.objects['Grid-u'].setVisible(False,True)
|
||||
scene.objects['Grid-v'].setVisible(False,True)
|
||||
else:
|
||||
scene.objects['Grid-u'].setVisible(True,True)
|
||||
scene.objects['Grid-v'].setVisible(True,True)
|
||||
|
||||
###############################################################################
|
||||
# Sons
|
||||
###############################################################################
|
||||
|
@ -257,7 +264,8 @@ def sound_set ():
|
|||
scene.objects['Sound-cmd']. restorePhysics()
|
||||
scene.objects['Sound-cmd-Hl'].setVisible(True,False)
|
||||
scene.objects['Commands']['sound']=True
|
||||
scene.objects['Cmd-text']['Text']= "Mute"
|
||||
# scene.objects['Cmd-text']['Text']= "Mute"
|
||||
scene.objects['Cmd-text']['Text']= "Muet"
|
||||
scene.objects['Cmd-text'].setVisible(True,False)
|
||||
|
||||
# Maj du fichier de config (sound : data/config/sound -> [0][1].text)
|
||||
|
@ -273,7 +281,8 @@ def sound_unset ():
|
|||
scene.objects['NoSound-cmd']. restorePhysics()
|
||||
scene.objects['NoSound-cmd-Hl'].setVisible(True,False)
|
||||
scene.objects['Commands']['sound']=False
|
||||
scene.objects['Cmd-text']['Text']= "Unmute"
|
||||
# scene.objects['Cmd-text']['Text']= "Unmute"
|
||||
scene.objects['Cmd-text']['Text']= "Rétablir le son"
|
||||
scene.objects['Cmd-text'].setVisible(True,False)
|
||||
|
||||
# Maj du fichier de config (sound : data/config/sound -> [0][1].text)
|
||||
|
@ -303,7 +312,7 @@ def cmd_init():
|
|||
scene.objects['Stop'].setVisible(False,False)
|
||||
scene.objects['Stop'].suspendPhysics()
|
||||
scene.objects['Stop-Hl'].setVisible(False,False)
|
||||
scene.objects['Distance-Hl'].setVisible(False,False)
|
||||
scene.objects['Objective-Hl'].setVisible(False,False)
|
||||
scene.objects['Doc-cmd-Hl'].setVisible(False,False)
|
||||
scene.objects['ResetView-Hl'].setVisible(False,False)
|
||||
scene.objects['About-cmd-Hl'].setVisible(False,False)
|
||||
|
@ -318,6 +327,10 @@ def cmd_init():
|
|||
|
||||
# UI : Text, ...
|
||||
scene.objects['Cmd-text'].setVisible(False,False)
|
||||
scene.objects['Grid-u'].setVisible(False,True)
|
||||
scene.objects['Grid-v'].setVisible(False,True)
|
||||
scene.objects['Points-Map-text'].setVisible(True,False)
|
||||
scene.objects['Points-Map-text']['Text']=""
|
||||
# scene.objects['Points-Map-text'].setVisible(False,False)
|
||||
# scene.objects['Info-1-text'].setVisible(False,False)
|
||||
# scene.objects['Info-2-text'].setVisible(False,False)
|
||||
|
@ -349,6 +362,13 @@ def cmd_init():
|
|||
for window in windows:
|
||||
scene.objects[window].setVisible(False,True)
|
||||
rp_doc.init()
|
||||
|
||||
# Missions
|
||||
# Read config (game speed : data/config/mission_current -> [0][2].text)
|
||||
# Read config (game speed : data/config/mission_success -> [0][3].text)
|
||||
scene.objects['Terrain']['mission_current']=int(rp_config_tree[0][2].text)
|
||||
scene.objects['Terrain']['mission_success']=int(rp_config_tree[0][3].text)
|
||||
scene.objects['Points-Map-text']['Text']="Mission "+str(scene.objects['Terrain']['mission_current'])
|
||||
|
||||
##
|
||||
# Highlight des commandes
|
||||
|
@ -379,17 +399,28 @@ def cmd_hl(cont):
|
|||
scene.objects['Stop-Hl'].setVisible(True,False)
|
||||
|
||||
# Text
|
||||
text_hl ={"Run":"Run (F5)",
|
||||
text_hl ={"Run":"Exécuter (F5)",
|
||||
"Stop":"Stop (F6)",
|
||||
"Pause":"Pause (F5)",
|
||||
"Distance":"Show distance",
|
||||
"Objective":"Afficher objectif",
|
||||
"Doc-cmd":"Documentation",
|
||||
"ResetView": "Reset view (Home key)",
|
||||
"About-cmd": "About",
|
||||
"Speed_down": "Speed down (-)",
|
||||
"Speed_up": "Speed up (+)",
|
||||
"Sound-cmd": "Mute",
|
||||
"NoSound-cmd": "Unmute"}
|
||||
"ResetView": "Reset de la vue (Touche Début)",
|
||||
"About-cmd": "A propos",
|
||||
"Speed_down": "Moins vite (-)",
|
||||
"Speed_up": "Plus vite (+)",
|
||||
"Sound-cmd": "Muet",
|
||||
"NoSound-cmd": "Rétablir le son"}
|
||||
# text_hl ={"Run":"Run (F5)",
|
||||
# "Stop":"Stop (F6)",
|
||||
# "Pause":"Pause (F5)",
|
||||
# "Distance":"Show objective",
|
||||
# "Doc-cmd":"Documentation",
|
||||
# "ResetView": "Reset view (Home key)",
|
||||
# "About-cmd": "About",
|
||||
# "Speed_down": "Speed down (-)",
|
||||
# "Speed_up": "Speed up (+)",
|
||||
# "Sound-cmd": "Mute",
|
||||
# "NoSound-cmd": "Unmute"}
|
||||
scene.objects['Cmd-text']['Text']= text_hl[obj.name]
|
||||
scene.objects['Cmd-text'].setVisible(True,False)
|
||||
|
||||
|
@ -439,6 +470,8 @@ def cmd_click (cont):
|
|||
terrain_run ()
|
||||
if obj.name=="Stop":
|
||||
terrain_stop ()
|
||||
if obj.name=="Objective":
|
||||
terrain_grid ()
|
||||
if obj.name=="Speed_up" or obj.name=="Speed_down":
|
||||
terrain_speed (obj)
|
||||
if obj.name=="ResetView":
|
||||
|
@ -833,7 +866,7 @@ def tablet_close ():
|
|||
scene.objects['Stop'].setVisible(False,False)
|
||||
scene.objects['Stop'].suspendPhysics()
|
||||
scene.objects['Stop-Hl'].setVisible(False,False)
|
||||
scene.objects['Distance-Hl'].setVisible(False,False)
|
||||
scene.objects['Objective-Hl'].setVisible(False,False)
|
||||
scene.objects['Doc-cmd-Hl'].setVisible(False,False)
|
||||
scene.objects['ResetView-Hl'].setVisible(False,False)
|
||||
scene.objects['About-cmd-Hl'].setVisible(False,False)
|
||||
|
|
16
rp_cmd.py
16
rp_cmd.py
|
@ -37,19 +37,9 @@ def end():
|
|||
|
||||
def commands():
|
||||
|
||||
###############################################################################
|
||||
# Initialisation du niveau :
|
||||
# Niveau 0 : Vide
|
||||
# Niveau 1 : Les premiers pas de Ropy
|
||||
# Niveau 2 : Sécuriser Ropy
|
||||
# Niveau 3 : Partir au bout du monde
|
||||
# Niveau 4 : Faire face à l'inconnu
|
||||
# Niveau 5 : Se rendre utile
|
||||
###############################################################################
|
||||
|
||||
rp_niveau (1) # Saisir le niveau (de 0 à 5)
|
||||
ropy_init.main() # Initialisation de la scène 3D
|
||||
|
||||
print("Go !!")
|
||||
rp_gauche()
|
||||
rp_avancer()
|
||||
|
||||
###############################################################################
|
||||
# En: Externals calls << DONT CHANGE THIS SECTION >>
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
<data>
|
||||
<config>
|
||||
<speed>2.0</speed>
|
||||
<speed>0.25</speed>
|
||||
<sound>True</sound>
|
||||
<mission_current>2</mission_current>
|
||||
<mission_success>1</mission_success>
|
||||
</config>
|
||||
</data>
|
77
rp_doc.py
77
rp_doc.py
|
@ -1,5 +1,5 @@
|
|||
import bge # Bibliothèque Blender Game Engine (UPBGE)
|
||||
import aud # Sounds
|
||||
import aud # Sounds
|
||||
|
||||
###############################################################################
|
||||
# rp_doc.py
|
||||
|
@ -23,6 +23,7 @@ color_doc_chap = (0, 1, 0.857,1) # Turquoise
|
|||
color_doc_fct = (0, 1, 0.857,1) # Turquoise
|
||||
color_doc_hl = (0.799, 0.617, 0.021, 1) # Jaune
|
||||
color_doc_activate = (0.936, 0.033, 1, 1) # Rose
|
||||
color_doc_mission = (1, 0.192, 0.03, 1) # Orange
|
||||
|
||||
# Sounds
|
||||
# audiodev = aud.Device()
|
||||
|
@ -46,6 +47,19 @@ card_description ={}
|
|||
# Missions
|
||||
###############################################################################
|
||||
|
||||
# ###############################################################################
|
||||
# # Initialisation du niveau :
|
||||
# # Niveau 0 : Vide
|
||||
# # Niveau 1 : Les premiers pas de Ropy
|
||||
# # Niveau 2 : Sécuriser Ropy
|
||||
# # Niveau 3 : Partir au bout du monde
|
||||
# # Niveau 4 : Faire face à l'inconnu
|
||||
# # Niveau 5 : Se rendre utile
|
||||
# ###############################################################################
|
||||
|
||||
# rp_niveau (1) # Saisir le niveau (de 0 à 5)
|
||||
# ropy_init.main() # Initialisation de la scène 3D
|
||||
|
||||
missions_card=["mission_1-card", "mission_2-card", "mission_3-card", "mission_4-card", "mission_5-card", "mission_6-card", "mission_7-card", "mission_8-card"]
|
||||
|
||||
# Mission 1
|
||||
|
@ -186,6 +200,12 @@ def init():
|
|||
scene.objects[missions_card[i]].color = color_doc_fct
|
||||
scene.objects[missions_card[i]+"-icon"].color = color_doc_fct
|
||||
scene.objects[missions_card[i]+"-text"].color = color_doc_fct
|
||||
scene.objects[missions_card[i][:-5]+"-current"].color = color_doc_mission
|
||||
scene.objects[missions_card[i][:-5]+"-current-icon"].color = color_doc_mission
|
||||
scene.objects[missions_card[i][:-5]+"-current-text"].color = color_doc_mission
|
||||
scene.objects[missions_card[i][:-5]+"-current"].setVisible(False,True)
|
||||
scene.objects[missions_card[i][:-5]+"-current-icon"].setVisible(False,True)
|
||||
scene.objects[missions_card[i][:-5]+"-current-text"].setVisible(False,True)
|
||||
for i in range(len(rover_card)):
|
||||
scene.objects[rover_card[i]].color = color_doc_fct
|
||||
scene.objects[rover_card[i]+"-icon"].color = color_doc_fct
|
||||
|
@ -227,6 +247,20 @@ def open():
|
|||
scene.objects['Doc_chap-'+name_chap].worldPosition = scene.objects['Doc'].worldPosition
|
||||
scene.objects['Doc_chap-'+name_chap].setVisible(True,True)
|
||||
|
||||
# Placer la carte de la mission active
|
||||
if name_chap == "missions":
|
||||
for i in range(len(missions_card)):
|
||||
scene.objects[missions_card[i][:-5]+"-current"].setVisible(False,False)
|
||||
scene.objects[missions_card[i][:-5]+"-current-icon"].setVisible(False,False)
|
||||
scene.objects[missions_card[i][:-5]+"-current-text"].setVisible(False,False)
|
||||
print("mission_+"+str(scene.objects['Terrain']['mission_current'])+"-card")
|
||||
scene.objects["mission_+"+str(scene.objects['Terrain']['mission_current'])+"-card"].setVisible(False,False)
|
||||
scene.objects["mission_+"+str(scene.objects['Terrain']['mission_current'])+"-card-icon"].setVisible(False,False)
|
||||
scene.objects["mission_+"+str(scene.objects['Terrain']['mission_current'])+"-card-icon"].setVisible(False,False)
|
||||
scene.objects["mission_+"+str(scene.objects['Terrain']['mission_current'])+"-current"].setVisible(True,False)
|
||||
scene.objects["mission_+"+str(scene.objects['Terrain']['mission_current'])+"-current-icon"].setVisible(True,False)
|
||||
scene.objects["mission_+"+str(scene.objects['Terrain']['mission_current'])+"-current-icon"].setVisible(True,False)
|
||||
|
||||
# Afficher le texte de la carte active
|
||||
if name_chap != "general":
|
||||
if scene.objects['Doc_chap-'+name_chap]['page_fct'] !="":
|
||||
|
@ -287,10 +321,18 @@ def hl (cont):
|
|||
scene.objects[name].color = color_doc_activate
|
||||
scene.objects[name_text].color = color_doc_activate
|
||||
scene.objects[name_icon].color = color_doc_activate
|
||||
if name_chap == "missions":
|
||||
scene.objects[name[:-5]+"-current"].color = color_doc_activate
|
||||
scene.objects[name[:-5]+"-current-icon"].color = color_doc_activate
|
||||
scene.objects[name[:-5]+"-current-text"].color = color_doc_activate
|
||||
else:
|
||||
scene.objects[name].color = color_doc_hl
|
||||
scene.objects[name_text].color = color_doc_hl
|
||||
scene.objects[name_icon].color = color_doc_hl
|
||||
if name_chap == "missions":
|
||||
scene.objects[name[:-5]+"-current"].color = color_doc_hl
|
||||
scene.objects[name[:-5]+"-current-icon"].color = color_doc_hl
|
||||
scene.objects[name[:-5]+"-current-text"].color = color_doc_hl
|
||||
|
||||
# Désactivation
|
||||
if cont.sensors['MO'].status == JUST_RELEASED :
|
||||
|
@ -316,10 +358,19 @@ def hl (cont):
|
|||
scene.objects[name].color = color_doc_activate
|
||||
scene.objects[name_text].color = color_doc_activate
|
||||
scene.objects[name_icon].color = color_doc_activate
|
||||
if name_chap == "missions":
|
||||
scene.objects[name[:-5]+"-current"].color = color_doc_activate
|
||||
scene.objects[name[:-5]+"-current-icon"].color = color_doc_activate
|
||||
scene.objects[name[:-5]+"-current-text"].color = color_doc_activate
|
||||
else:
|
||||
scene.objects[name].color = color_doc_fct
|
||||
scene.objects[name_text].color = color_doc_fct
|
||||
scene.objects[name_icon].color = color_doc_fct
|
||||
if name_chap == "missions":
|
||||
scene.objects[name[:-5]+"-current"].color = color_doc_mission
|
||||
scene.objects[name[:-5]+"-current-icon"].color = color_doc_mission
|
||||
scene.objects[name[:-5]+"-current-text"].color = color_doc_mission
|
||||
|
||||
|
||||
##
|
||||
# Afficher le chapitre
|
||||
|
@ -345,6 +396,19 @@ def chapter(cont):
|
|||
scene.objects['Doc_chap-'+name_chap].worldPosition = scene.objects['Doc'].worldPosition
|
||||
scene.objects['Doc_chap-'+name_chap].setVisible(True,True)
|
||||
|
||||
# Placer la carte de la mission active
|
||||
if name_chap == "missions":
|
||||
for i in range(len(missions_card)):
|
||||
scene.objects[missions_card[i][:-5]+"-current"].setVisible(False,False)
|
||||
scene.objects[missions_card[i][:-5]+"-current-icon"].setVisible(False,False)
|
||||
scene.objects[missions_card[i][:-5]+"-current-text"].setVisible(False,False)
|
||||
scene.objects["mission_"+str(scene.objects['Terrain']['mission_current'])+"-card"].setVisible(False,False)
|
||||
scene.objects["mission_"+str(scene.objects['Terrain']['mission_current'])+"-card-icon"].setVisible(False,False)
|
||||
scene.objects["mission_"+str(scene.objects['Terrain']['mission_current'])+"-card-text"].setVisible(False,False)
|
||||
scene.objects["mission_"+str(scene.objects['Terrain']['mission_current'])+"-current"].setVisible(True,False)
|
||||
scene.objects["mission_"+str(scene.objects['Terrain']['mission_current'])+"-current-icon"].setVisible(True,False)
|
||||
scene.objects["mission_"+str(scene.objects['Terrain']['mission_current'])+"-current-text"].setVisible(True,False)
|
||||
|
||||
# Afficher le texte de la carte active
|
||||
if name_chap != "general":
|
||||
if scene.objects['Doc_chap-'+name_chap]['page_fct'] !="":
|
||||
|
@ -377,6 +441,10 @@ def card (cont):
|
|||
scene.objects[scene.objects['Doc_chap-'+name_chap]['page_fct']].color = color_doc_fct
|
||||
scene.objects[scene.objects['Doc_chap-'+name_chap]['page_fct']+'-text'].color = color_doc_fct
|
||||
scene.objects[scene.objects['Doc_chap-'+name_chap]['page_fct']+'-icon'].color = color_doc_fct
|
||||
if name_chap == "missions":
|
||||
scene.objects[scene.objects['Doc_chap-'+name_chap]['page_fct'][:-5]+"-current"].color = color_doc_mission
|
||||
scene.objects[scene.objects['Doc_chap-'+name_chap]['page_fct'][:-5]+"-current-icon"].color = color_doc_mission
|
||||
scene.objects[scene.objects['Doc_chap-'+name_chap]['page_fct'][:-5]+"-current-text"].color = color_doc_mission
|
||||
|
||||
# Afficher le texte de la carte
|
||||
scene.objects['Doc_chap-'+name_chap]['page_fct'] = name_fct
|
||||
|
@ -388,6 +456,13 @@ def card (cont):
|
|||
scene.objects['Doc_title'].setVisible(True, False)
|
||||
scene.objects['Doc_text'].setVisible(True, False)
|
||||
|
||||
# Placer la carte de la mission active
|
||||
if name_chap == "missions":
|
||||
scene.objects[name_fct[:-5]+"-current"].color = color_doc_activate
|
||||
scene.objects[name_fct[:-5]+"-current-icon"].color = color_doc_activate
|
||||
scene.objects[name_fct[:-5]+"-current-text"].color = color_doc_activate
|
||||
|
||||
|
||||
##
|
||||
# Sounds
|
||||
##
|
||||
|
|
90
rp_lib.py
90
rp_lib.py
|
@ -149,6 +149,96 @@ def sound_play (sound):
|
|||
if scene.objects['Commands']['sound'] and sys.platform!="win32":
|
||||
audiodev.play(sound)
|
||||
|
||||
###############################################################################
|
||||
# Rover fonction élèves
|
||||
###############################################################################
|
||||
|
||||
##
|
||||
# Avancer le rover
|
||||
##
|
||||
|
||||
def rp_avancer ():
|
||||
print ("rp_avancer")
|
||||
step =1
|
||||
obj=scene.objects['Rover']
|
||||
# print (obj.worldOrientation.to_euler().z)
|
||||
x0 = obj.worldPosition.x
|
||||
y0 = obj.worldPosition.y
|
||||
z0 = obj.worldPosition.z
|
||||
if round(obj.worldOrientation.to_euler().z, 2) == 0.00: # Sud
|
||||
obj.worldPosition=[x0, y0-step, z0]
|
||||
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
|
||||
obj.worldPosition=[x0, y0+step, z0]
|
||||
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
|
||||
obj.worldPosition=[x0+step, y0, z0]
|
||||
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
|
||||
obj.worldPosition=[x0-step, y0, z0]
|
||||
|
||||
##
|
||||
# Tourner à gauche
|
||||
##
|
||||
|
||||
def rp_gauche ():
|
||||
print ("rp_gauche")
|
||||
step=math.pi/2 # Pas angulaire
|
||||
obj=scene.objects['Rover']
|
||||
obj.applyRotation((0, 0, step), True)
|
||||
|
||||
##
|
||||
# Tourner à droite
|
||||
##
|
||||
|
||||
def rp_droite ():
|
||||
print ("rp_droite")
|
||||
step=math.pi/2 # Pas angulaire
|
||||
obj=scene.objects['Rover']
|
||||
obj.applyRotation((0, 0, -step), True)
|
||||
|
||||
##
|
||||
# Marquer
|
||||
##
|
||||
|
||||
def rp_marquer ():
|
||||
print ("rp_marquer")
|
||||
# FIXME
|
||||
|
||||
##
|
||||
# Détecter
|
||||
##
|
||||
|
||||
def rp_detect ():
|
||||
print ("rp_detect")
|
||||
# FIXME
|
||||
|
||||
##
|
||||
# Prendre
|
||||
##
|
||||
|
||||
def rover_prendre ():
|
||||
print ("rp_prendre")
|
||||
# FIXME
|
||||
|
||||
##
|
||||
# Radar
|
||||
##
|
||||
|
||||
def rover_radar ():
|
||||
print ("rp_radar")
|
||||
# FIXME
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Rover
|
||||
###############################################################################
|
||||
|
||||
##
|
||||
# Colision
|
||||
##
|
||||
|
||||
def rover_colision ():
|
||||
pass
|
||||
|
||||
|
||||
# ###############################################################################
|
||||
# # Waves (minions)
|
||||
# ###############################################################################
|
||||
|
|
20
rp_map1.py
20
rp_map1.py
|
@ -1,6 +1,6 @@
|
|||
import bge # Bibliothèque Blender Game Engine (UPBGE)
|
||||
import bpy # Blender
|
||||
from rp_lib import * # Bibliothèque CodeTower
|
||||
from rp_lib import * # Bibliothèque Ropy
|
||||
import os
|
||||
|
||||
###############################################################################
|
||||
|
@ -35,6 +35,10 @@ def map_init():
|
|||
# directory=os.path.join(file_path, inner_path),
|
||||
# filename=object_name)
|
||||
|
||||
# Rover
|
||||
obj=scene.objects['Rover']
|
||||
applyRotationTo(obj, None, None, 0.0, True)
|
||||
|
||||
# Reset counters
|
||||
def map_reset():
|
||||
scene.objects['Points']['step']=0
|
||||
|
@ -48,3 +52,17 @@ def map_reset():
|
|||
# scene.objects['Points']['minions']=0
|
||||
# scene.objects['Points']['minions_run']=0
|
||||
# scene.objects['Points']['wave']=1
|
||||
|
||||
|
||||
# ###############################################################################
|
||||
# # Initialisation du niveau :
|
||||
# # Niveau 0 : Vide
|
||||
# # Niveau 1 : Les premiers pas de Ropy
|
||||
# # Niveau 2 : Sécuriser Ropy
|
||||
# # Niveau 3 : Partir au bout du monde
|
||||
# # Niveau 4 : Faire face à l'inconnu
|
||||
# # Niveau 5 : Se rendre utile
|
||||
# ###############################################################################
|
||||
|
||||
# rp_niveau (1) # Saisir le niveau (de 0 à 5)
|
||||
# ropy_init.main() # Initialisation de la scène 3D
|
||||
|
|
Loading…
Reference in New Issue