grid.py
author Eugen Sawin <sawine@me73.com>
Thu, 30 Dec 2010 14:36:25 +0100
changeset 4 20edf3e369a2
permissions -rwxr-xr-x
Better circle approximation rule.
     1 grids = {}
     2 
     3 def createGrid(name):
     4 	grids[name] = Grid(name)
     5 
     6 class Cell(object):
     7 
     8 	def __init__(self, id, value):
     9 		self.id = id
    10 		self.value = value
    11 
    12 	def __str__(self):
    13 		return "(id:%s value:%s)" % (self.id, self.value)
    14 		
    15 class Grid(object):
    16 
    17 	def __init__(self, name):
    18 		self.name = name
    19 		self.cells = {}
    20 		self.observers = []
    21 			
    22 	def set(self, cellId, value):		
    23 		if value and cellId not in self.cells:	
    24 			self.cells[cellId] = Cell(cellId, value)
    25 			self.dispatch(Cell(cellId, 0), self.cells[cellId])
    26 		elif not value and cellId in self.cells:
    27 			self.dispatch(self.cells[cellId], Cell(cellId, 0))
    28 			del self.cells[cellId]			
    29 	
    30 	def dispatch(self, old, new):
    31 		for o in self.observers:
    32 			o[0].sendto("old: %s\nnew: %s\n" % (old, new), o[1])
    33 
    34 	def addObserver(self, socket, observer):
    35 		self.observers.append((socket, observer))
    36 		
    37