Ajout de la grille, des cartes de la mission en cours, rp_avancer(), rp_gauche() et rp_droite()

This commit is contained in:
Philippe Roy 2022-08-22 04:41:22 +02:00
parent f0a77c2a59
commit 52b760c946
7 changed files with 243 additions and 35 deletions

Binary file not shown.

71
rp.py
View File

@ -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)

View File

@ -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 >>

View File

@ -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>

View File

@ -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
##

View File

@ -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)
# ###############################################################################

View File

@ -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