mirror of
https://forge.apps.education.fr/phroy/codetower.git
synced 2024-01-27 11:35:17 +01:00
refonte des icones
This commit is contained in:
parent
9f046aa9d0
commit
113fd09c9c
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -1,6 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs/>
|
||||
<g>
|
||||
<path stroke="none" fill="#FFFFFF" d="M19 -16 L19 -4 Q19 -2.75 18.15 -1.85 L15 1.25 15 10.75 18.15 13.9 Q19 14.75 19 16 L19 20 Q19 21.25 18.15 22.15 17.25 23 16 23 L-16 23 Q-17.25 23 -18.1 22.15 -19 21.25 -19 20 L-19 16 Q-19 14.75 -18.1 13.9 L-15 10.75 -15 1.25 -18.1 -1.85 Q-19 -2.75 -19 -4 L-19 -16 Q-19 -17.25 -18.1 -18.1 -17.25 -19 -16 -19 L-12 -19 Q-10.75 -19 -9.85 -18.1 -9 -17.25 -9 -16 L-9 -11 -7 -11 -7 -16 Q-7 -17.25 -6.1 -18.1 -5.25 -19 -4 -19 L4 -19 Q5.25 -19 6.15 -18.1 7 -17.25 7 -16 L7 -11 9 -11 9 -16 Q9 -17.25 9.9 -18.1 10.75 -19 12 -19 L16 -19 Q17.25 -19 18.15 -18.1 19 -17.25 19 -16"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 722 B |
70
ct.py
70
ct.py
@ -27,7 +27,7 @@ ct_cmd = importlib.import_module('ct_cmd')
|
||||
|
||||
# Récupérer la scène UPBGE
|
||||
scene = bge.logic.getCurrentScene()
|
||||
# print("Objets de la scene : ", scene.objects)
|
||||
# scene_non_contruct = [] # Liste des tuiles non constructibles
|
||||
|
||||
# Couleurs
|
||||
|
||||
@ -65,6 +65,7 @@ def cmd_construct_tour(cont):
|
||||
obj_Hl.color = couleur_cmd
|
||||
scene.objects['Tour_construc_mode'].setVisible(False,False)
|
||||
scene.objects['Tour_construc_mode'].color = couleur_cmd
|
||||
scene.objects['Texte_info'].setVisible(False,False)
|
||||
else:
|
||||
scene.objects['Terrain']['construct_mode']=True
|
||||
obj.worldScale=[1.25, 1.25, 1.25]
|
||||
@ -73,6 +74,8 @@ def cmd_construct_tour(cont):
|
||||
obj_Hl.color = couleur_cmd_hl
|
||||
scene.objects['Tour_construc_mode'].setVisible(True,False)
|
||||
scene.objects['Tour_construc_mode'].color = couleur_cmd
|
||||
scene.objects['Texte_info'].setVisible(True,False)
|
||||
scene.objects['Texte_info']['Text']="Position tour : "
|
||||
|
||||
# Affiche position
|
||||
def construct_tour_pos(cont):
|
||||
@ -81,22 +84,62 @@ def construct_tour_pos(cont):
|
||||
hitObject = cont.sensors['MO'].hitObject
|
||||
hitPosition = cont.sensors['MO'].hitPosition
|
||||
if hitObject is not None :
|
||||
print (hitObject.name)
|
||||
print (hitPosition)
|
||||
scene.objects['Tour_construc_mode'].worldPosition.x=round(hitPosition.x)
|
||||
scene.objects['Tour_construc_mode'].worldPosition.y=round(hitPosition.y)
|
||||
scene.objects['Tour_construc_mode'].worldPosition.z=0.2
|
||||
if [round(hitPosition.x),round(hitPosition.y)] in scene.objects['Terrain']['scene_non_contruct']:
|
||||
pass
|
||||
else:
|
||||
scene.objects['Tour_construc_mode'].worldPosition.x=round(hitPosition.x)
|
||||
scene.objects['Tour_construc_mode'].worldPosition.y=round(hitPosition.y)
|
||||
scene.objects['Tour_construc_mode'].worldPosition.z=0.2
|
||||
scene.objects['Texte_info']['Text']="Position tour : "+str(round(hitPosition.x))+","+str(round(hitPosition.y))
|
||||
|
||||
###############################################################################
|
||||
# Cycle
|
||||
# Terrain
|
||||
###############################################################################
|
||||
|
||||
# Initialisation du cycle de fonctionnement normal
|
||||
# def cycle_init (cont):
|
||||
# pass
|
||||
# Mise à jour de l'affichage des compteurs
|
||||
def points_maj (cont):
|
||||
|
||||
# Affichage
|
||||
scene.objects['Vies_texte']['Text']=str(scene.objects['Points']['vies'])+"/"+str(scene.objects['Points']['vies_max'])
|
||||
scene.objects['Pieces_texte']['Text']=str(scene.objects['Points']['pieces'])
|
||||
scene.objects['Level_texte']['Text']=str(scene.objects['Points']['level'])+"/"+str(scene.objects['Points']['level_max'])
|
||||
scene.objects['Minions_texte']['Text']=str(scene.objects['Points']['minions'])
|
||||
|
||||
# Fin de la vague
|
||||
if scene.objects['Terrain']['thread_vague']==False:
|
||||
if scene.objects['Points']['minions']==0:
|
||||
terrain_fin ()
|
||||
|
||||
# Initialisation lors du chargement du terrain
|
||||
def terrain_init (cont):
|
||||
|
||||
# Mise à zéro des compteurs
|
||||
scene.objects['Points']['vies']=10
|
||||
scene.objects['Points']['vies_max']=10
|
||||
scene.objects['Points']['pieces']=0
|
||||
scene.objects['Points']['level']=0
|
||||
scene.objects['Points']['level_max']=1
|
||||
scene.objects['Points']['minions']=0
|
||||
|
||||
# Initialisation lors du chargement du terrain
|
||||
def terrain_init (cont):
|
||||
|
||||
# Mise à zéro des compteurs
|
||||
# scene.objects['Vies_texte']['Text']="10/10"
|
||||
# scene.objects['Pieces_texte']['Text']="0"
|
||||
# scene.objects['Level_texte']['Text']="1"
|
||||
# scene.objects['Minions_texte']['Text']="0"
|
||||
|
||||
# Recherche les tuiles non constructibles
|
||||
scene.objects['Terrain']['scene_non_contruct'] = []
|
||||
for i in range (len(scene.objects)):
|
||||
if "tile_straight" in scene.objects[i].name:
|
||||
scene.objects['Terrain']['scene_non_contruct'].append([scene.objects[i].worldPosition.x, scene.objects[i].worldPosition.y])
|
||||
if "tile_cornerRound" in scene.objects[i].name:
|
||||
scene.objects['Terrain']['scene_non_contruct'].append([scene.objects[i].worldPosition.x, scene.objects[i].worldPosition.y])
|
||||
|
||||
# Mise en route et pause du cycle
|
||||
def cycle_run (cont):
|
||||
def terrain_run (cont):
|
||||
if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Terrain']['manip_mode']==0:
|
||||
|
||||
# Pause
|
||||
@ -125,7 +168,7 @@ def cycle_run (cont):
|
||||
ct_vg.start() # Lancement des vagues
|
||||
|
||||
# Arrêt et réinitialisation du cycle
|
||||
def cycle_stop (cont):
|
||||
def terrain_stop (cont):
|
||||
if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Terrain']['manip_mode']==0:
|
||||
|
||||
# Arrêt des threads utilisateurs
|
||||
@ -146,7 +189,7 @@ def cycle_stop (cont):
|
||||
scene.objects['Stop-Hl'].setVisible(False,False)
|
||||
|
||||
# Fin naturelle du cycle
|
||||
def cycle_fin ():
|
||||
def terrain_fin ():
|
||||
|
||||
scene.objects['Terrain']['run']=False
|
||||
scene.objects['Terrain']['thread_run']=False
|
||||
@ -172,6 +215,7 @@ def cmd_init():
|
||||
scene.objects['Construc-Hl'].setVisible(False,False)
|
||||
|
||||
scene.objects['Tour_construc_mode'].setVisible(False,False)
|
||||
scene.objects['Texte_info'].setVisible(False,False)
|
||||
# scene.objects['Raz-vue-Hl'].setVisible(False,False)
|
||||
# scene.objects['Aide-cmd-Hl'].setVisible(False,False)
|
||||
|
||||
|
@ -37,7 +37,8 @@ def commandes():
|
||||
|
||||
# Coder vos commandes ici ...
|
||||
|
||||
ct_tour(5,5)
|
||||
#ct_tour(12,2)
|
||||
ct_tour(4,5)
|
||||
|
||||
tempo(2)
|
||||
print ("Thread commandes #", len(threads)-1, "arrivé au bout -> fermeture.") # Tâche close (thread) << NE PAS MODIFIER CETTE LIGNE >>
|
||||
|
60
ct_lib.py
60
ct_lib.py
@ -102,18 +102,38 @@ def thread_stop(threads, type_txt):
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Vagues
|
||||
# Vagues (minions)
|
||||
#
|
||||
# Caractéristiques :
|
||||
# - Ufo basique : vitesse =1 ; pv_max= 2 (point de vie)
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
# Création d'un enemi
|
||||
def ct_ufo(x,y):
|
||||
# Création d'un minion
|
||||
def ct_minion(x,y):
|
||||
ufo= scene.addObject("Ufo", scene.objects['Terrain'])
|
||||
scene.objects['Points']['minions']= scene.objects['Points']['minions']+1
|
||||
ufo.worldPosition=mathutils.Vector((x,y,0.37))
|
||||
ufo.worldScale=mathutils.Vector((0.25,0.25,0.25))
|
||||
ufo.actuators['Steering'].velocity=ufo['vitesse']
|
||||
|
||||
# Dégats sur minion
|
||||
# def scn_minion_degat(cont):
|
||||
# obj = cont.owner
|
||||
# sensor = obj.sensors['Collision']
|
||||
# obj['pv'] = obj['pv']- sensor.hitObject['degat']
|
||||
# sensor.hitObject.endObject()
|
||||
# if obj['pv']<=0:
|
||||
# scene.objects['Points']['pieces']= scene.objects['Points']['pieces']+obj['pieces']
|
||||
# obj.endObject()
|
||||
# scene.objects['Points']['minions']= scene.objects['Points']['minions']-1
|
||||
|
||||
###############################################################################
|
||||
# Tours
|
||||
#
|
||||
# Caractéristiques :
|
||||
# - Tour basique : dégats = 1.0 ; portée = 3.0 ; vitesse =0,2
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
# Création d'une tour
|
||||
@ -121,37 +141,35 @@ def ct_tour(x,y):
|
||||
tour= scene.addObject("Tour", scene.objects['Terrain'])
|
||||
tour.worldPosition=mathutils.Vector((x,y,0.2))
|
||||
tour.worldScale=mathutils.Vector((1,1,1))
|
||||
scene.objects['Terrain']['scene_non_contruct'].append([x,y])
|
||||
|
||||
# Réaction d'une tour
|
||||
def scn_tour_near(cont):
|
||||
obj = cont.owner
|
||||
sensor = obj.sensors['Near']
|
||||
|
||||
# Supression enemi
|
||||
if len(sensor.hitObjectList)>0:
|
||||
|
||||
# Tir sur minion
|
||||
target=sensor.hitObjectList[0]
|
||||
bullet= scene.addObject("Bullet", scene.objects['Terrain'], 60*2, False)
|
||||
# bullet['degat'] = obj['degat']
|
||||
bullet.mass=0.001 # bullet.applyForce=((0,0,9.81),True)
|
||||
bullet.worldPosition=mathutils.Vector((obj.worldPosition.x,obj.worldPosition.y,1.5))
|
||||
# bullet.worldScale=mathutils.Vector((0.5,0.5,0.5))
|
||||
bullet.worldScale=[0.5,0.5,0.5]
|
||||
bullet.worldLinearVelocity.x = (sensor.hitObjectList[0].worldPosition.x-bullet.worldPosition.x)*bullet['vitesse']
|
||||
bullet.worldLinearVelocity.y= (sensor.hitObjectList[0].worldPosition.y-bullet.worldPosition.y)*bullet['vitesse']
|
||||
bullet.worldLinearVelocity.z = (sensor.hitObjectList[0].worldPosition.z+0.1-bullet.worldPosition.z)*bullet['vitesse']
|
||||
bullet.worldLinearVelocity.x = (target.worldPosition.x-bullet.worldPosition.x)*bullet['vitesse']
|
||||
bullet.worldLinearVelocity.y= (target.worldPosition.y-bullet.worldPosition.y)*bullet['vitesse']
|
||||
bullet.worldLinearVelocity.z = (target.worldPosition.z+0.1-bullet.worldPosition.z)*bullet['vitesse']
|
||||
|
||||
# Dégats sur minion
|
||||
target['pv'] = target['pv']- obj['degat']
|
||||
# bullet.endObject()
|
||||
if target['pv']<=0:
|
||||
scene.objects['Points']['pieces']= scene.objects['Points']['pieces']+target['pieces']
|
||||
target.endObject()
|
||||
scene.objects['Points']['minions']= scene.objects['Points']['minions']-1
|
||||
|
||||
# Fin de la vague
|
||||
if len(sensor.hitObjectList)==0:
|
||||
print ("fin vague")
|
||||
if scene.objects['Terrain']['thread_vague']==False:
|
||||
print ("fin vague2")
|
||||
ct.cycle_fin ()
|
||||
|
||||
# # Positionnement tour
|
||||
# def scn_tour_construct(cont):
|
||||
# obj = cont.owner
|
||||
# obj.worldScale=[1.25, 1.25, 1.25]
|
||||
# obj.color = couleur_cmd_hl
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Temporisation
|
||||
###############################################################################
|
||||
|
Loading…
x
Reference in New Issue
Block a user