Files
@ c95fa8ab1067
Branch filter:
Location: Diana/src/diana/go.py - annotation
c95fa8ab1067
1.0 KiB
text/x-python
changed imports
616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 | 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
|