Files @ d0b9b2add091
Branch filter:

Location: Diana/src/go.py

Laman
handling preset positions (in handicap games)
BLACK=1
WHITE=-1
EMPTY=0


class Go:
	board=[[EMPTY]*19 for i in range(19)]
	
	def __init__(self):
		self.board=[[EMPTY]*19 for i in range(19)]
		self.moveCount=0
	
	def move(self,color,y,x):
		if self.board[x][y]!=EMPTY: return False

		self.board[x][y]=color

		for i,j in ((-1,0),(1,0),(0,-1),(0,1)):
			self.temp=[[False]*19 for i in range(19)]
			if not self._floodFill(-color,x+i,y+j): self._remove()
		self.temp=[[False]*19 for i in range(19)]
		if not self._floodFill(color,x,y):
			self.board[x][y]=EMPTY
			return False
		self.moveCount+=1
		return True

	def _floodFill(self,color,x,y):
		if x<0 or x>18 or y<0 or y>18: return False
		if self.temp[x][y]: return False
		if self.board[x][y]==EMPTY: return True
		if self.board[x][y]!=color: return False
		self.temp[x][y]=True
		return self._floodFill(color,x-1,y) or self._floodFill(color,x+1,y) or self._floodFill(color,x,y-1) or self._floodFill(color,x,y+1)
	
	def _remove(self):
		for i in range(19):
			for j in range(19):
				if self.temp[i][j]: self.board[i][j]=EMPTY