|
@@ -34,11 +34,10 @@ import regles as regles
|
|
|
|
|
|
|
|
class Plateau(QGraphicsScene, Materiel):
|
|
class Plateau(QGraphicsScene, Materiel):
|
|
|
"""plateau de jeu contenant les cases, decors et pions"""
|
|
"""plateau de jeu contenant les cases, decors et pions"""
|
|
|
- def __init__(self, fenetre, parent=None):
|
|
|
|
|
|
|
+ def __init__(self, parent=None):
|
|
|
super(Plateau, self).__init__()
|
|
super(Plateau, self).__init__()
|
|
|
#parametres et variables
|
|
#parametres et variables
|
|
|
self._type = "pl"
|
|
self._type = "pl"
|
|
|
- self.fenetre = fenetre
|
|
|
|
|
|
|
|
|
|
##partie et infos plateau
|
|
##partie et infos plateau
|
|
|
self.chapitre = 0
|
|
self.chapitre = 0
|
|
@@ -103,8 +102,9 @@ class Plateau(QGraphicsScene, Materiel):
|
|
|
def decors(self):
|
|
def decors(self):
|
|
|
return self.pions.combattants()
|
|
return self.pions.combattants()
|
|
|
|
|
|
|
|
- def creer(self):
|
|
|
|
|
|
|
+ def creer(self, fenetre):
|
|
|
"""cree le plateau"""
|
|
"""cree le plateau"""
|
|
|
|
|
+ self.fenetre = fenetre
|
|
|
self.dateCreation = time()
|
|
self.dateCreation = time()
|
|
|
self.creePar = self.fenetre.profil.pseudo()
|
|
self.creePar = self.fenetre.profil.pseudo()
|
|
|
self.hCase = 120 #hauteur d'une case
|
|
self.hCase = 120 #hauteur d'une case
|
|
@@ -212,52 +212,53 @@ class Plateau(QGraphicsScene, Materiel):
|
|
|
|
|
|
|
|
def connexions(self):
|
|
def connexions(self):
|
|
|
"""connecte le plateau aux differents widgets de la fenetre principale"""
|
|
"""connecte le plateau aux differents widgets de la fenetre principale"""
|
|
|
|
|
+ pass
|
|
|
#modes d'interaction
|
|
#modes d'interaction
|
|
|
- self.fenetre.connect(self.fenetre.ui.cbt_modeCreation, SIGNAL("clicked()"), self.plateauModeCreation, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cbt_modeCombat, SIGNAL("clicked()"), self.plateauModeCombat, Qt.UniqueConnection)
|
|
|
|
|
-
|
|
|
|
|
- #etapes du combat
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cbt_etapeSuivante, SIGNAL("clicked()"), self.etapeSuivante, Qt.UniqueConnection)
|
|
|
|
|
- self.connect(self.fenetre.ui.pc_listePJ, SIGNAL("cellClicked(int, int)"), self.ajouterPj)
|
|
|
|
|
-
|
|
|
|
|
- #affichage de fenetres
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cbt_nom, SIGNAL("clicked()"), self.afficherEcranPlateau, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cbt_afficherGestion, SIGNAL("clicked()"), self.afficheEcranGestionCombat, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.pi_listeAttributs, SIGNAL("cellChanged(int,int)"), self.listeAttributCelluleModifiee, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_dialogueCouleurs, SIGNAL("clicked()"), self.modePeintureCase, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_afficherNotes, SIGNAL("clicked()"), self.agrandirNotesMjPlateau, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.pi_fiche, SIGNAL("clicked()"), self.afficherFichePion, Qt.UniqueConnection)
|
|
|
|
|
-
|
|
|
|
|
- #listes
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_listeTerrains, SIGNAL("cellClicked(int,int)"), self.modeMajTerrainCase, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_listeCreatures, SIGNAL("cellClicked(int,int)"), self.modeCreationCombattant, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_listeDecors, SIGNAL("cellClicked(int,int)"), self.modeCreationDecor, Qt.UniqueConnection)
|
|
|
|
|
-
|
|
|
|
|
- #creation
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_epaisseurPinceau, SIGNAL("valueChanged(int)"), self.majEpaisseurPinceau, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_pipetteCouleur, SIGNAL("clicked()"), self.modeCopieTerrain, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_effets, SIGNAL("activated(int)"), self.modeCaseEffet, Qt.UniqueConnection)
|
|
|
|
|
-
|
|
|
|
|
- #autres:
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_gomme, SIGNAL("clicked()"), self.majModeSupprimerPions, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_placerEntree, SIGNAL("clicked()"), self.majModeDefinirEntree, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_placerCache, SIGNAL("clicked()"), self.majModePlacerCache, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_placerSortie, SIGNAL("clicked()"), self.majModeDefinirSortie, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_defPlacement, SIGNAL("clicked()"), self.majModeZonePlacement, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.pi_notes, SIGNAL("textChanged()"), self.majNotesCombattant, Qt.UniqueConnection)
|
|
|
|
|
-
|
|
|
|
|
- #formes (dessin)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_formeSimple, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_formeLigne, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_formeLigneOrientee, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_formePot, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_formeRectVide, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_formeRectPlein, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
|
|
-
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.act_deplacement, SIGNAL("clicked()"), self.majModeCombatDeplacement, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.act_attaqueCac, SIGNAL("clicked()"), self.majModeCombatAttaqueCaC, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.act_attaqueDist, SIGNAL("clicked()"), self.majModeCombatAttaqueDist, Qt.UniqueConnection)
|
|
|
|
|
- self.fenetre.connect(self.fenetre.ui.act_attaqueZone, SIGNAL("clicked()"), self.majModeCombatZone, Qt.UniqueConnection)
|
|
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cbt_modeCreation, SIGNAL("clicked()"), self.plateauModeCreation, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cbt_modeCombat, SIGNAL("clicked()"), self.plateauModeCombat, Qt.UniqueConnection)
|
|
|
|
|
+#
|
|
|
|
|
+# #etapes du combat
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cbt_etapeSuivante, SIGNAL("clicked()"), self.etapeSuivante, Qt.UniqueConnection)
|
|
|
|
|
+# self.connect(self.fenetre.ui.pc_listePJ, SIGNAL("cellClicked(int, int)"), self.ajouterPj)
|
|
|
|
|
+#
|
|
|
|
|
+# #affichage de fenetres
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cbt_nom, SIGNAL("clicked()"), self.afficherEcranPlateau, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cbt_afficherGestion, SIGNAL("clicked()"), self.afficheEcranGestionCombat, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.pi_listeAttributs, SIGNAL("cellChanged(int,int)"), self.listeAttributCelluleModifiee, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_dialogueCouleurs, SIGNAL("clicked()"), self.modePeintureCase, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_afficherNotes, SIGNAL("clicked()"), self.agrandirNotesMjPlateau, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.pi_fiche, SIGNAL("clicked()"), self.afficherFichePion, Qt.UniqueConnection)
|
|
|
|
|
+#
|
|
|
|
|
+# #listes
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_listeTerrains, SIGNAL("cellClicked(int,int)"), self.modeMajTerrainCase, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_listeCreatures, SIGNAL("cellClicked(int,int)"), self.modeCreationCombattant, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_listeDecors, SIGNAL("cellClicked(int,int)"), self.modeCreationDecor, Qt.UniqueConnection)
|
|
|
|
|
+#
|
|
|
|
|
+# #creation
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_epaisseurPinceau, SIGNAL("valueChanged(int)"), self.majEpaisseurPinceau, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_pipetteCouleur, SIGNAL("clicked()"), self.modeCopieTerrain, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_effets, SIGNAL("activated(int)"), self.modeCaseEffet, Qt.UniqueConnection)
|
|
|
|
|
+#
|
|
|
|
|
+# #autres:
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_gomme, SIGNAL("clicked()"), self.majModeSupprimerPions, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_placerEntree, SIGNAL("clicked()"), self.majModeDefinirEntree, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_placerCache, SIGNAL("clicked()"), self.majModePlacerCache, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_placerSortie, SIGNAL("clicked()"), self.majModeDefinirSortie, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_defPlacement, SIGNAL("clicked()"), self.majModeZonePlacement, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.pi_notes, SIGNAL("textChanged()"), self.majNotesCombattant, Qt.UniqueConnection)
|
|
|
|
|
+#
|
|
|
|
|
+# #formes (dessin)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_formeSimple, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_formeLigne, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_formeLigneOrientee, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_formePot, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_formeRectVide, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.cp_formeRectPlein, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
|
|
+#
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.act_deplacement, SIGNAL("clicked()"), self.majModeCombatDeplacement, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.act_attaqueCac, SIGNAL("clicked()"), self.majModeCombatAttaqueCaC, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.act_attaqueDist, SIGNAL("clicked()"), self.majModeCombatAttaqueDist, Qt.UniqueConnection)
|
|
|
|
|
+# self.fenetre.connect(self.fenetre.ui.act_attaqueZone, SIGNAL("clicked()"), self.majModeCombatZone, Qt.UniqueConnection)
|
|
|
# self.fenetre.connect(self.fenetre.ui.pi_formeAttaqueZone, SIGNAL("activated (int)"), self.majModeCombatZone, Qt.UniqueConnection)
|
|
# self.fenetre.connect(self.fenetre.ui.pi_formeAttaqueZone, SIGNAL("activated (int)"), self.majModeCombatZone, Qt.UniqueConnection)
|
|
|
# self.fenetre.connect(self.fenetre.ui.pi_rayonAttaqueZone, SIGNAL("valueChanged(int)"), self.majRayonZone, Qt.UniqueConnection)
|
|
# self.fenetre.connect(self.fenetre.ui.pi_rayonAttaqueZone, SIGNAL("valueChanged(int)"), self.majRayonZone, Qt.UniqueConnection)
|
|
|
|
|
|
|
@@ -292,9 +293,9 @@ class Plateau(QGraphicsScene, Materiel):
|
|
|
self.initListeAttaques()
|
|
self.initListeAttaques()
|
|
|
self.majBoutonEtape()
|
|
self.majBoutonEtape()
|
|
|
|
|
|
|
|
- self.fenetre.ui.act_deplacement.setCheckable(True)
|
|
|
|
|
- self.fenetre.ui.act_attaqueCac.setCheckable(True)
|
|
|
|
|
- self.fenetre.ui.act_attaqueDist.setCheckable(True)
|
|
|
|
|
|
|
+# self.fenetre.ui.act_deplacement.setCheckable(True)
|
|
|
|
|
+# self.fenetre.ui.act_attaqueCac.setCheckable(True)
|
|
|
|
|
+# self.fenetre.ui.act_attaqueDist.setCheckable(True)
|
|
|
# self.fenetre.ui.act_attaqueZone.setCheckable(True)
|
|
# self.fenetre.ui.act_attaqueZone.setCheckable(True)
|
|
|
|
|
|
|
|
#mise a jour de l'interface d'informations
|
|
#mise a jour de l'interface d'informations
|
|
@@ -586,10 +587,6 @@ class Plateau(QGraphicsScene, Materiel):
|
|
|
effets = ["brule", "eau", "glace", "poison", "aucun"]
|
|
effets = ["brule", "eau", "glace", "poison", "aucun"]
|
|
|
self.activerMode(Modes.MajCasesEffet, effets[index])
|
|
self.activerMode(Modes.MajCasesEffet, effets[index])
|
|
|
|
|
|
|
|
- def modeCreationPion(self):
|
|
|
|
|
- """enclenche le mode de creation de pions simples"""
|
|
|
|
|
- self.majMode("pionCreation")
|
|
|
|
|
-
|
|
|
|
|
def majModeSupprimerPions(self):
|
|
def majModeSupprimerPions(self):
|
|
|
"""enclenche le mode suppression de pions sur clic gauche (creatures ou decors)"""
|
|
"""enclenche le mode suppression de pions sur clic gauche (creatures ou decors)"""
|
|
|
self.activerMode(Modes.SuppressionPion)
|
|
self.activerMode(Modes.SuppressionPion)
|
|
@@ -653,15 +650,6 @@ class Plateau(QGraphicsScene, Materiel):
|
|
|
def majModeCombatZone(self):
|
|
def majModeCombatZone(self):
|
|
|
action = choisirAttaqueZone()
|
|
action = choisirAttaqueZone()
|
|
|
self.modeActif.nouvelleAction(action)
|
|
self.modeActif.nouvelleAction(action)
|
|
|
-
|
|
|
|
|
-# def majModeCombatLigne(self):
|
|
|
|
|
-# self.modeActif.nouvelleAction(Actions.Ligne)
|
|
|
|
|
-#
|
|
|
|
|
-# def majModeCombatDisque(self):
|
|
|
|
|
-# self.modeActif.nouvelleAction(Actions.Disque)
|
|
|
|
|
-#
|
|
|
|
|
-# def majModeCombatCone(self):
|
|
|
|
|
-# self.modeActif.nouvelleAction(Actions.Cone)
|
|
|
|
|
|
|
|
|
|
def majModeDefinirEntree(self):
|
|
def majModeDefinirEntree(self):
|
|
|
self.activerMode(Modes.CreationEntreeSortie, "E")
|
|
self.activerMode(Modes.CreationEntreeSortie, "E")
|
|
@@ -1055,178 +1043,7 @@ class Plateau(QGraphicsScene, Materiel):
|
|
|
"""centre la vue sur le pion"""
|
|
"""centre la vue sur le pion"""
|
|
|
self.vue().centerOn(self.cases[self.pions[num].position].centreGraphique)
|
|
self.vue().centerOn(self.cases[self.pions[num].position].centreGraphique)
|
|
|
|
|
|
|
|
-# def coordonneesValides(self, coord):
|
|
|
|
|
-# """les coordonnees entrees en parametre sont elles celles d'une case du plateau"""
|
|
|
|
|
-# return (coord[0] >= 0 and coord[1] >= 0 and coord[0] < self.nbCasesX and coord[1] < self.nbCasesY)
|
|
|
|
|
-#
|
|
|
|
|
-# def lstCoordAdjacentes(self, x, y):
|
|
|
|
|
-# """renvoie la liste des coordonnees adjacentes, !!!! sans condition d'existence sur le plateau !!!!
|
|
|
|
|
-# attention: l'ordre est important"""
|
|
|
|
|
-# if self.formeCases == "H":
|
|
|
|
|
-# if 1 == (x % 2):
|
|
|
|
|
-# voisins = [(x, y-1), (x+1, y), (x+1, y+1), (x, y+1), (x-1, y+1), (x-1, y)]
|
|
|
|
|
-# else:
|
|
|
|
|
-# voisins = [(x, y-1), (x+1, y-1), (x+1, y), (x, y+1), (x-1, y), (x-1, y-1)]
|
|
|
|
|
-# else:
|
|
|
|
|
-# voisins = [(x, y-1), (x+1, y), (x, y+1), (x-1, y)]
|
|
|
|
|
-# return voisins
|
|
|
|
|
-
|
|
|
|
|
-# def zone(self, origine, rayon, zR = 0):
|
|
|
|
|
-# """renvoie un dictionnaire representant la liste des coordonnees des cases comprises dans la zone
|
|
|
|
|
-# la zone en question est la liste des cases situees a une distance d des coordonnees d'origine"""
|
|
|
|
|
-# if not self.coordonneesValides(origine) or not rayon >= 0: return {}
|
|
|
|
|
-# if rayon == 0: return {origine: 0}
|
|
|
|
|
-# resultat = {}
|
|
|
|
|
-# aVerifier = [] ; aVerifier2 = [] ; k = 0
|
|
|
|
|
-# #on part de la premiere case, puis on itere a partir de chaque nouveau depart sur les voisins
|
|
|
|
|
-# aVerifier.append(origine)
|
|
|
|
|
-# while k <= rayon:
|
|
|
|
|
-# for depart in aVerifier:
|
|
|
|
|
-# for coord in self.cases[depart].voisins:
|
|
|
|
|
-# if not coord in aVerifier and not coord in aVerifier2 and not coord in resultat:
|
|
|
|
|
-# aVerifier2.append(coord)
|
|
|
|
|
-# for elt in aVerifier:
|
|
|
|
|
-# resultat[elt] = k
|
|
|
|
|
-# aVerifier = aVerifier2 ; aVerifier2 = [] ; k += 1
|
|
|
|
|
-# return resultat
|
|
|
|
|
-
|
|
|
|
|
-# def zone3d(self, origine, rayon, zCible=0):
|
|
|
|
|
-# """renvoie les cases de la zone au format (x, y, z)"""
|
|
|
|
|
-# retour = []
|
|
|
|
|
-# zone = self.zone(origine, rayon)
|
|
|
|
|
-# for coord in zone:
|
|
|
|
|
-# x, y = coord
|
|
|
|
|
-# dz = rayon - zone[coord]
|
|
|
|
|
-# for z in range(-dz, dz + 1):
|
|
|
|
|
-# retour.append( (x, y, (zCible+z) ) )
|
|
|
|
|
-# return retour
|
|
|
|
|
-
|
|
|
|
|
-# def cone(self, coord1, coord2):
|
|
|
|
|
-# """renvoie les coord des cases composant le cone (en 2d)"""
|
|
|
|
|
-# retour = []
|
|
|
|
|
-# x1, y1 = coord1 ; x2, y2 = coord2
|
|
|
|
|
-# if x1 % 2 == 1: y1 += 0.5
|
|
|
|
|
-# if x2 % 2 == 1: y2 += 0.5
|
|
|
|
|
-#
|
|
|
|
|
-# if abs(y2 - y1) - abs(x2 - x1) <= 0 :
|
|
|
|
|
-# #secteur horizontal
|
|
|
|
|
-# angleRef = (y2 - y1) / (x2 - x1)
|
|
|
|
|
-# dist2Ref = ( (x2 - x1)**2 + (y2 - y1)**2 )
|
|
|
|
|
-# for coord in self.cases:
|
|
|
|
|
-# x, y = coord
|
|
|
|
|
-# if x % 2 == 1: y += 0.5
|
|
|
|
|
-# if x != x1:
|
|
|
|
|
-# angle = (y - y1) / (x - x1)
|
|
|
|
|
-# if abs( angleRef - angle ) <= 0.5 and ( (x - x1)**2 + (y - y1)**2 ) <= dist2Ref \
|
|
|
|
|
-# and ( (x - x1) * (x2 - x1) ) > 0:
|
|
|
|
|
-# retour.append(coord)
|
|
|
|
|
-# else:
|
|
|
|
|
-# #secteur vertical
|
|
|
|
|
-# angleRef = (x2 - x1) / (y2 - y1)
|
|
|
|
|
-# dist2Ref = ( (x2 - x1)**2 + (y2 - y1)**2 )
|
|
|
|
|
-# for coord in self.cases:
|
|
|
|
|
-# x, y = coord
|
|
|
|
|
-# if x % 2 == 1: y += 0.5
|
|
|
|
|
-# if y != y1:
|
|
|
|
|
-# angle = (x - x1) / (y - y1)
|
|
|
|
|
-# if abs( angleRef - angle ) <= 0.5 and ( (x - x1)**2 + (y - y1)**2 ) <= dist2Ref \
|
|
|
|
|
-# and ( (y - y1) * (y2 - y1) ) > 0:
|
|
|
|
|
-# retour.append(coord)
|
|
|
|
|
-# return retour
|
|
|
|
|
-#
|
|
|
|
|
-# def cone3d(self, coord1, coord2, z1 = 0, z2 = 0):
|
|
|
|
|
-# return self.cone(coord1, coord2)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-# def blocAdjacent(self, listeCases):
|
|
|
|
|
-# """renvoie un bloc de cases adjacentes a partir de la liste en parametre"""
|
|
|
|
|
-# retour = []
|
|
|
|
|
-# tmp1 = [listeCases[0]]; tmp2 = [listeCases[0]]
|
|
|
|
|
-# while len(tmp2) > 0:
|
|
|
|
|
-# tmp2 = []
|
|
|
|
|
-# #on liste les cases voisines qui sont dans la liste et pas encore verifiees
|
|
|
|
|
-# for coord in tmp1:
|
|
|
|
|
-# for voisine in self.cases[coord].voisins:
|
|
|
|
|
-# if voisine in listeCases and not voisine in tmp1 and not voisine in tmp2:
|
|
|
|
|
-# tmp2.append(voisine)
|
|
|
|
|
-# #chacune de ces cases prend le statut de verifiee
|
|
|
|
|
-# for coord in tmp1:
|
|
|
|
|
-# listeCases.remove(coord)
|
|
|
|
|
-# retour.append(coord)
|
|
|
|
|
-# tmp1 = tmp2
|
|
|
|
|
-# return retour
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
-# def polygone(self, x, y):
|
|
|
|
|
-# """renvoie l'objet graphique hexagone de la case de coordonnees (x, y)"""
|
|
|
|
|
-# polygone = QPolygonF()
|
|
|
|
|
-# if self.formeCases == "H":
|
|
|
|
|
-# #si x est impair sur un plateau a cases hexagonales, le y est augmente de 0.5
|
|
|
|
|
-# if 1 == (x % 2):
|
|
|
|
|
-# y += 0.5
|
|
|
|
|
-# polygone << QPointF(((x*0.866)+0.2886)*120, y*120) \
|
|
|
|
|
-# << QPointF(((x*0.866)+0.866)*120, y*120) \
|
|
|
|
|
-# << QPointF(((x*0.866)+1.1547)*120, (y+0.5)*120) \
|
|
|
|
|
-# << QPointF(((x*0.866)+0.866)*120, (y+1)*120) \
|
|
|
|
|
-# << QPointF(((x*0.866)+0.2886)*120, (y+1)*120) \
|
|
|
|
|
-# << QPointF( (x*0.866)*120, (y+0.5)*120)
|
|
|
|
|
-# else:
|
|
|
|
|
-# polygone << QPointF(x*120, y*120) \
|
|
|
|
|
-# << QPointF((x+1)*120, y*120) \
|
|
|
|
|
-# << QPointF((x+1)*120, (y+1)*120) \
|
|
|
|
|
-# << QPointF(x*120, (y+1)*120)
|
|
|
|
|
-# return polygone
|
|
|
|
|
-
|
|
|
|
|
-# def polygoneAgglo(self, listeCases):
|
|
|
|
|
-# """renvoie un polygone contruit par agglomeration des polygones des cases de la liste
|
|
|
|
|
-# les cases doivent etre adjacentes (cases hexagonales ou carrees)"""
|
|
|
|
|
-# segments = []
|
|
|
|
|
-# #on parcourt les faces des polygones des cases, et on ne garde que ceux qui n'ont pas de case 'en face'
|
|
|
|
|
-# for coord in listeCases:
|
|
|
|
|
-# polygone = self.polygone(coord[0], coord[1])
|
|
|
|
|
-# voisins = self.lstCoordAdjacentes(coord[0], coord[1])
|
|
|
|
|
-#
|
|
|
|
|
-# for i in range(0, len(voisins)):
|
|
|
|
|
-# if not voisins[i] in listeCases:
|
|
|
|
|
-# j = i+1
|
|
|
|
|
-# if j > len(voisins) - 1:
|
|
|
|
|
-# j = 0
|
|
|
|
|
-# segments.append(QLineF(polygone[i], polygone[j]))
|
|
|
|
|
-#
|
|
|
|
|
-# #on 'accroche' les segments les uns aux autres, dans l'ordre
|
|
|
|
|
-# if not len(segments) > 0: return None
|
|
|
|
|
-# segments2 = [segments[0]]
|
|
|
|
|
-# for segment2 in segments2:
|
|
|
|
|
-# for segment in segments:
|
|
|
|
|
-# if not QLineF(segment.p1(), segment.p2()) in segments2 and not QLineF(segment.p2(), segment.p1()) in segments2:
|
|
|
|
|
-# if sqrt((segment.p1().x()-segment2.p2().x())**2+(segment.p1().y()-segment2.p2().y())**2) < 1:
|
|
|
|
|
-# segments2.append(QLineF(segment.p1(), segment.p2()))
|
|
|
|
|
-# elif sqrt((segment.p2().x()-segment2.p2().x())**2+(segment.p2().y()-segment2.p2().y())**2) < 1:
|
|
|
|
|
-# segments2.append(QLineF(segment.p2(), segment.p1()))
|
|
|
|
|
-#
|
|
|
|
|
-# pointsPolygone = []
|
|
|
|
|
-# premierPoint = segments2[0].p1()
|
|
|
|
|
-# pointsPolygone.append(premierPoint)
|
|
|
|
|
-# for segment in segments2:
|
|
|
|
|
-# pointSuivant = segment.p2()
|
|
|
|
|
-# if pointSuivant != premierPoint:
|
|
|
|
|
-# pointsPolygone.append(pointSuivant)
|
|
|
|
|
-#
|
|
|
|
|
-# #creation du polygone
|
|
|
|
|
-# polygone = QPolygonF()
|
|
|
|
|
-# for point in pointsPolygone:
|
|
|
|
|
-# polygone.append(point)
|
|
|
|
|
-#
|
|
|
|
|
-# return polygone
|
|
|
|
|
-
|
|
|
|
|
-# def coordCentreListeCases(self, listeCases):
|
|
|
|
|
-# """renvoie les coordonnees centrales d'une liste de cases"""
|
|
|
|
|
-# retour = None
|
|
|
|
|
-# if len(listeCases) > 0:
|
|
|
|
|
-# listeTriee = sorted(listeCases)
|
|
|
|
|
-# posMilieu = int(len(listeCases)/2)
|
|
|
|
|
-# retour = listeTriee[posMilieu]
|
|
|
|
|
-# return retour
|
|
|
|
|
|
|
|
|
|
def coordonneesAuPoint(self, point):
|
|
def coordonneesAuPoint(self, point):
|
|
|
"""renvoie les coordonnees de la case situee au QPointF entre en parametre"""
|
|
"""renvoie les coordonnees de la case situee au QPointF entre en parametre"""
|