diff options
-rw-r--r-- | card.py | 19 | ||||
-rw-r--r-- | deck.py | 55 | ||||
-rw-r--r-- | game.py | 3 | ||||
-rwxr-xr-x | genpieces.py | 6 |
4 files changed, 54 insertions, 29 deletions
@@ -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 @@ -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. @@ -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 |