Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--card.py19
-rw-r--r--deck.py55
-rw-r--r--game.py3
-rwxr-xr-xgenpieces.py6
4 files changed, 54 insertions, 29 deletions
diff --git a/card.py b/card.py
index 2320e2a..709e9d5 100644
--- a/card.py
+++ b/card.py
@@ -22,10 +22,13 @@ CARDS = 3
class Card:
- def __init__(self, sprites, svg0, svg1, card_type='tile', number=0):
- self.spr = Sprite(sprites, 0, 0, svg_str_to_pixbuf(svg0))
- self.highlight = svg_str_to_pixbuf(svg1)
+ def __init__(self, sprites, svg, svgs, card_type='tile', number=0):
+ self.spr = Sprite(sprites, 0, 0, svg_str_to_pixbuf(svg))
+ self.highlight = []
+ for s in svgs:
+ self.highlight.append(svg_str_to_pixbuf(s))
self.paths = [] # [[N, E, S, W], [N, E, S, W]]
+ self.shape = None
self.orientation = 0
self.type = card_type
self.number = number
@@ -37,6 +40,13 @@ class Card:
def get_paths(self):
return self.paths
+ def set_shape(self, path):
+ if self.shape is None:
+ self.spr.set_shape(self.highlight[path])
+ self.shape = path
+ elif self.shape != path:
+ self.spr.set_shape(self.highlight[-1])
+
def rotate_clockwise(self):
""" rotate the card and its paths """
for i in range(len(self.paths)):
@@ -46,7 +56,8 @@ class Card:
self.paths[i][E] = self.paths[i][N]
self.paths[i][N] = west
self.spr.images[0] = self.spr.images[0].rotate_simple(270)
- self.highlight = self.highlight.rotate_simple(270)
+ for h in range(len(self.highlight)):
+ self.highlight[h] = self.highlight[h].rotate_simple(270)
self.spr.draw()
self.orientation += 90
self.orientation %= 360
diff --git a/deck.py b/deck.py
index ff03d1f..deef874 100644
--- a/deck.py
+++ b/deck.py
@@ -29,45 +29,58 @@ class Deck:
self.cards = []
i = 0
for a in range(16):
- self.cards.append(Card(sprites, generate_tile_1_line(
- -1, 0, 0, 0, scale), generate_tile_1_line(
- -1, 0, 0, 0, scale, color), number=i))
+ self.cards.append(Card(sprites,
+ generate_tile_1_line(-1, 0, 0, 0, scale),
+ [generate_tile_1_line(-1, 0, 0, 0, scale, color)], number=i))
self.cards[-1].set_paths([[0, 0, 0, 1]])
i += 1
for a in range(4):
- self.cards.append(Card(sprites, generate_tile_1_line(
- -1, 0, 1, 0, scale), generate_tile_1_line(
- -1, 0, 1, 0, scale, color), number=i))
+ self.cards.append(Card(sprites,
+ generate_tile_1_line(-1, 0, 1, 0, scale),
+ [generate_tile_1_line(-1, 0, 1, 0, scale, color)], number=i))
self.cards[-1].set_paths([[0, 1, 0, 1]])
i += 1
for a in range(12):
- self.cards.append(Card(sprites, generate_tile_2_lines(
- -1, 0, 1, 0, 0, 0, 0, 1, scale), generate_tile_2_lines(
- -1, 0, 1, 0, 0, 0, 0, 1, scale, color), number=i))
+ self.cards.append(Card(sprites,
+ generate_tile_2_lines(-1, 0, 1, 0, 0, 0, 0, 1, scale),
+ [generate_tile_2_lines(-1, 0, 1, 0, 0, 0, 0, 1, scale,
+ [color, color])], number=i))
self.cards[-1].set_paths([[0, 1, 1, 1]])
i += 1
for a in range(16):
- self.cards.append(Card(sprites, generate_tile_2_lines(
- -1, 0, 0, 0, 0, -1, 0, 0, scale), generate_tile_2_lines(
- -1, 0, 0, 0, 0, -1, 0, 0, scale, color), number=i))
+ self.cards.append(Card(sprites,
+ generate_tile_2_lines(-1, 0, 0, 0, 0, -1, 0, 0, scale),
+ [generate_tile_2_lines(-1, 0, 0, 0, 0, -1, 0, 0, scale,
+ [color, color])], number=i))
self.cards[-1].set_paths([[1, 0, 0, 1]])
i += 1
for a in range(4):
- self.cards.append(Card(sprites, generate_tile_2_lines(
- -1, 0, 1, 0, 0, -1, 0, 1, scale), generate_tile_2_lines(
- -1, 0, 1, 0, 0, -1, 0, 1, scale, color), number=i))
+ self.cards.append(Card(sprites,
+ generate_tile_2_lines(-1, 0, 1, 0, 0, -1, 0, 1, scale),
+ [generate_tile_2_lines(-1, 0, 1, 0, 0, -1, 0, 1, scale,
+ [color, color])], number=i))
self.cards[-1].set_paths([[1, 1, 1, 1]])
i += 1
for a in range(8):
- self.cards.append(Card(sprites, generate_tile_2_lines(
- 0, -1, 1, 0, -1, 0, 0, 1, scale), generate_tile_2_lines(
- 0, -1, 1, 0, -1, 0, 0, 1, scale, color), number=i))
+ self.cards.append(Card(sprites,
+ generate_tile_2_lines(0, -1, 1, 0, -1, 0, 0, 1, scale),
+ [generate_tile_2_lines(0, -1, 1, 0, -1, 0, 0, 1, scale,
+ [color, '#000000']),
+ generate_tile_2_lines(0, -1, 1, 0, -1, 0, 0, 1, scale,
+ ['#000000', color]),
+ generate_tile_2_lines(0, -1, 1, 0, -1, 0, 0, 1, scale,
+ [color, color])], number=i))
self.cards[-1].set_paths([[1, 1, 0, 0], [0, 0, 1, 1]])
i += 1
for a in range(4):
- self.cards.append(Card(sprites, generate_tile_2_lines(
- 0, -1, 1, 0, -1, 0, 0, 0, scale), generate_tile_2_lines(
- 0, -1, 1, 0, -1, 0, 0, 0, scale, color), number=i))
+ self.cards.append(Card(sprites,
+ generate_tile_2_lines(0, -1, 1, 0, -1, 0, 0, 0, scale),
+ [generate_tile_2_lines(0, -1, 1, 0, -1, 0, 0, 0, scale,
+ [color, '#000000']),
+ generate_tile_2_lines(0, -1, 1, 0, -1, 0, 0, 0, scale,
+ ['#000000', color]),
+ generate_tile_2_lines(0, -1, 1, 0, -1, 0, 0, 0, scale,
+ [color, color])], number=i))
self.cards[-1].set_paths([[1, 1, 0, 0], [0, 0, 0, 1]])
i += 1
# Remember the current position in the deck.
diff --git a/game.py b/game.py
index 360e725..c53ec4b 100644
--- a/game.py
+++ b/game.py
@@ -324,8 +324,7 @@ class Game():
if not break_in_path[p] and len(self._paths[p]) > 0:
# TODO: Change the color of path 0 vs 1
for i in self._paths[p]:
- self.grid.grid[i[0]].spr.set_shape(
- self.grid.grid[i[0]].highlight)
+ self.grid.grid[i[0]].set_shape(i[1])
def _tile_to_test(self, test_path):
''' Find a tile that needs testing. '''
diff --git a/genpieces.py b/genpieces.py
index defd332..90934d5 100755
--- a/genpieces.py
+++ b/genpieces.py
@@ -170,12 +170,14 @@ def generate_tile_1_line(a, b, c, d, scale=1, color='#000000'):
svg_string += svg.footer()
return svg_string
-def generate_tile_2_lines(a, b, c, d, e, f, g, h, scale=1, color='#000000'):
+def generate_tile_2_lines(a, b, c, d, e, f, g, h, scale=1,
+ colors=['#000000', '#000000']):
svg = SVG()
svg.set_scale(scale)
- svg.set_colors([color, '#FFFFFF'])
svg_string = svg.header()
+ svg.set_colors([colors[0], '#FFFFFF'])
svg_string += svg.path(a, b, c, d)
+ svg.set_colors([colors[1], '#FFFFFF'])
svg_string += svg.path(e, f, g, h)
svg_string += svg.footer()
return svg_string