|
|
@@ -16,16 +16,18 @@ class Forme():
|
|
|
"""renvoie la liste des cases situees a [distance] cases du centre, dans l'ordre des aiguilles d'une montre"""
|
|
|
anneau = {}
|
|
|
if self.formeCases == "H":
|
|
|
- anneau[1] = [(0,-1),(1,-0.5),(1,0.5), \
|
|
|
- (0,1),(-1,0.5),(-1,-0.5)]
|
|
|
- anneau[2] = [(0,-2),(1,-1.5),(2,-1),(2,0),(2,1),(1,1.5), \
|
|
|
- (0,2),(-1,1.5),(-2,1),(-2,0),(-2,-1),(-1,-1.5)]
|
|
|
- anneau[3] = [(0,-3),(1,-2.5),(2,-2),(3,-1.5),(3,-0.5),(3,0.5),(3,1.5),(2,2),(1,2.5), \
|
|
|
- (0,3),(-1,2.5),(-2,2),(-3,1.5),(-3,0.5),(-3,-0.5),(-3,-1.5),(-2,-2),(-1,-2.5)]
|
|
|
- anneau[4] = [(0,-4),(1,-3.5),(2,-3),(3,-2.5),(4,-2),(4,-1),(4,0),(4,1),(4,2),(3,2.5),(2,3),(1,3.5), \
|
|
|
- (0,4),(-1,3.5),(-2,3),(-3,2.5),(-4,2),(-4,1),(-4,0),(-4,-1),(-4,-2),(-3,-2.5),(-2,-3),(-1,-3.5)]
|
|
|
- anneau[5] = [(0,-5),(1,-4.5),(2,-4),(3,-3.5),(4,-3),(5,-2.5),(5,-1.5),(5,-0.5),(5,0.5),(5,1.5),(5,2.5),(4,3),(3,3.5),(2,4),(1,4.5), \
|
|
|
- (0,5),(-1,4.5),(-2,4),(-3,3.5),(-4,3),(-5,2.5),(-5,1.5),(-5,0.5),(-5,-0.5),(-5,-1.5),(-5,-2.5),(-4,-3),(-3,-3.5),(-2,-4),(-1,-4.5)]
|
|
|
+ anneau[1] = [(0,-1),(1,0),(1,1),(0,1),(-1,1),(-1,0)]
|
|
|
+
|
|
|
+ anneau[2] = [(0,-2),(1,-1),(2,-1),(2,0),(2,1),(1,2),(0,2),(-1,2),(-2,1),(-2,0),(-2,-1),(-1,-1)]
|
|
|
+
|
|
|
+ anneau[3] = [(0,-3),(1,-2),(2,-2),(3,-1),(3,0),(3,1),(3,2),(2,2),(1,3), \
|
|
|
+ (0,3),(-1,3),(-2,2),(-3,2),(-3,1),(-3,0),(-3,-1),(-2,-2),(-1,-2)]
|
|
|
+
|
|
|
+ anneau[4] = [(0,-4),(1,-3),(2,-3),(3,-2),(4,-2),(4,-1),(4,0),(4,1),(4,2),(3,3),(2,3),(1,4), \
|
|
|
+ (0,4),(-1,4),(-2,3),(-3,3),(-4,2),(-4,1),(-4,0),(-4,-1),(-4,-2),(-3,-2),(-2,-3),(-1,-3)]
|
|
|
+
|
|
|
+ anneau[5] = [(0,-5),(1,-4),(2,-4),(3,-3),(4,-3),(5,-2),(5,-1),(5,0),(5,1),(5,2),(5,3),(4,3),(3,4),(2,4),(1,5), \
|
|
|
+ (0,5),(-1,5),(-2,4),(-3,4),(-4,3),(-5,3),(-5,2),(-5,1),(-5,0),(-5,-1),(-5,-2),(-4,-3),(-3,-3),(-2,-4),(-1,-4)]
|
|
|
|
|
|
elif self.formeCases == "C":
|
|
|
anneau[1] = [(0,-1),(1,-1),(1,0),(1,1),\
|
|
|
@@ -91,6 +93,13 @@ class Forme():
|
|
|
if len(self.formeDef) > 0:
|
|
|
for i in range(0,abs(nbRotations)):
|
|
|
for coord in tmp:
|
|
|
+
|
|
|
+## #correctif a appliquer pour les abscisses impaires avec cases hexa
|
|
|
+## cy = 0
|
|
|
+## if self.formeCases == "H" and 1==(coord[0]%2):
|
|
|
+## cy = 1
|
|
|
+## coord = (coord[0], coord[1]+cy)
|
|
|
+
|
|
|
#on trouve dans quel anneau se situe cette case
|
|
|
distance = 0
|
|
|
i = 0
|
|
|
@@ -98,6 +107,7 @@ class Forme():
|
|
|
i += 1
|
|
|
if coord in self.anneau(i):
|
|
|
distance = i
|
|
|
+
|
|
|
#si on a trouve la case, on la deplace selon les conditions de la rotation
|
|
|
if distance > 0:
|
|
|
#position actuelle dans la liste des cases de l'anneau
|
|
|
@@ -114,6 +124,7 @@ class Forme():
|
|
|
|
|
|
#on retrouve les nouvelles coordonnees relatives a partir de la position dans l'anneau
|
|
|
nouvellesCoord = self.anneau(distance)[nouvellePosition]
|
|
|
+
|
|
|
#on ajoute cette position a la nouvelle definition de forme
|
|
|
formeDefPivote.append((nouvellesCoord[0], nouvellesCoord[1]))
|
|
|
else:
|
|
|
@@ -133,5 +144,11 @@ class Forme():
|
|
|
formeEnCours = self.formeDef
|
|
|
if len(formeEnCours) > 0:
|
|
|
for coordRelatives in formeEnCours:
|
|
|
- retour.append((coordCibles[0]+coordRelatives[0], coordCibles[1]+coordRelatives[1]))
|
|
|
+ #correctif a appliquer pour les abscisses impaires avec cases hexa
|
|
|
+ cy = 0
|
|
|
+ if self.formeCases == "H" and 0==(coordCibles[0]%2):
|
|
|
+ if 1==(coordRelatives[0]%2):
|
|
|
+ cy = -1
|
|
|
+ retour.append((coordCibles[0]+coordRelatives[0], coordCibles[1]+coordRelatives[1]+cy))
|
|
|
+## retour.append((coordCibles[0]+coordRelatives[0], coordCibles[1]+coordRelatives[1]))
|
|
|
return retour
|