cau/grid.py
author Eugen Sawin <sawine@me73.com>
Mon, 18 Jul 2011 00:51:04 +0200
changeset 11 a131769728f1
parent 7 95ea605276a3
permissions -rw-r--r--
Added header.
     1 """
     2 Description: Cellular automata grid.
     3 Author: Eugen Sawin <sawine@me73.com>
     4 """
     5 
     6 class Grid(object):
     7 	def __init__(self):
     8 		self.cells = {}
     9 		self.valuemap = {}
    10 		self.minx = 0
    11 		self.maxx = 0
    12 		self.miny = 0
    13 		self.maxy = 0
    14 
    15 	def set(self, pos, value=1):
    16 		if pos in self.cells and value != self.cells[pos]:
    17 			self.clear(pos)
    18 		if not pos in self.cells:
    19 			self.cells[pos] = value
    20 			if value in self.valuemap:
    21 				self.valuemap[value].append(pos)
    22 			else:
    23 				self.valuemap[value] = [pos]
    24 			self.update(pos)
    25 		return self
    26 
    27 	def clear(self, pos):
    28 		if pos in self.cells: 
    29 			self.valuemap[self.cells[pos]].remove(pos)
    30 			del self.cells[pos]
    31 			self.update(pos)
    32 		return self
    33 
    34 	def update(self, (x, y)):
    35 		self.minx = min(x, self.minx)
    36 		self.maxx = max(x, self.maxx)
    37 		self.miny = min(y, self.miny)
    38 		self.maxy = max(y, self.maxy)
    39 		return self
    40 
    41 	def width(self):
    42 		return self.maxx - self.minx + 1
    43 
    44 	def height(self):
    45 		return self.maxy - self.miny + 1
    46 
    47 	def __len__(self):
    48 		return len(self.cells)
    49 
    50 	def __str__(self):
    51 		pass