Files
@ f669c32706e5
Branch filter:
Location: Diana/src/go.py - annotation
f669c32706e5
1.0 KiB
text/x-python
refactoring: much of SourceFile.createDiagram moved to drawer, created drawer.Base class
2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 f669c32706e5 f669c32706e5 f669c32706e5 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 f669c32706e5 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 2a5d1585e748 | 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
|