Source

pygamegsoc12 / alchemymadness / blocks.py

Diff from to

alchemymadness/blocks.py

 GRID_SIZE_W = 9
 GRID_SIZE_H = 16
 
+BLOCK_W = 30
+BLOCK_H = 30
+
 class Block(DirtySprite):
     rect = Rect(0, 0, 30, 30)
     changed = False
         self._color = value
         self.changed = True
 
+
+    def grid_pos(self, pos, grid_rect):
+        """ set the rect for the given (x,y) grid pos
+        """
+        gx, gy = pos
+        x, y = gx * BLOCK_W, gy * BLOCK_H
+        x += grid_rect[0]
+        y += grid_rect[1]
+        self.rect = pygame.Rect(x, y, BLOCK_W, BLOCK_H)
+        self.changed = True
+        self.dirty = 1
+
+
+
 class Blocks(object):
     """ contains 3 Block() instances.
     """
-    def __init__(self):
+    def __init__(self, parent):
         super(Blocks, self).__init__()
 
+        self.parent = parent
         self.colors = [(255,0,0), (0,255,0), (0,0,255)]
 
         # how do we handle location, and rotation? We say where the grid it is on.
         #     top, left is (0,0)
         self.grid_positions = [[0,0], [1,0], [2,0]]
 
+        self.blocks = [Block(c) for c in self.colors]
+        self.on_moved()
+
+    def on_moved(self):
+        for b, pos in zip(self.blocks, self.grid_positions):
+            b.grid_pos(pos, self.parent.rect)
+
 
     def update(self, time):
         pass
                 b[1] = 0
 
     def action_move_down(self):
-
         for b in self.grid_positions:
             b[1] += 1
-
             if b[1] >= GRID_SIZE_H:
                 b[1] = GRID_SIZE_H - 1
 
         self.GRID_SIZE_W = GRID_SIZE_W
         self.GRID_SIZE_H = GRID_SIZE_H
 
+        self.rect = pygame.Rect(100, 100, 300, 300)
+
         self.restart()
     def restart(self):
         self.init_grid()
+        self.blocks = Blocks(self)
+
 
     def init_grid(self):
         # init our 10x10 grid, to show the color of each grid part.