Source

pygamegsoc12 / alchemymadness / blocks.py

Full commit
"""Mixing potion"""

import pygame
from pygame.locals import Rect
from pygame.sprite import DirtySprite

import resources

class Block(DirtySprite):
    rect = Rect(0, 0, 30, 30)
    changed = False

    def __init__(self, color, *groups):
        super(Block, self).__init__(*groups)

        self._image = pygame.Surface(self.rect.size) # Sprite image
        self._color = color  # Block color
        self.changed = True
        self.dirty = 1

    @property
    def image(self):
        if self.changed:
            self._image = resources.block.copy()
            self._image.fill(self._color, special_flags=pygame.locals.BLEND_RGBA_MULT)
        return self._image

    @property
    def color(self):
        return self._color

    @color.setter
    def color(self, value):
        self._color = value
        self.changed = True

class Blocks(DirtySprite):

    def __init__(self, *groups):
        super(Blocks, self).__init__(*groups)


        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]]

        # what is our image?
        self.dirty = 1


    def update(self, time):
        pass



class Grid(object):
    """
    """
    GRID_SIZE = 10

    def __init__(self):
        super(Grid, self).__init__()
        self.restart()

    def restart(self):
        self.init_grid()

    def init_grid(self):
        # init our 10x10 grid, to show the color of each grid part.
        #[[(0,0,0), ...],
        # ...
        #]
        self.grid = []
        for x in range(self.GRID_SIZE):
            self.grid.append([(0,0,0)] * self.GRID_SIZE)

        import pprint
        pprint.pprint(self.grid)