diff --git a/src/config.py b/src/config.py --- a/src/config.py +++ b/src/config.py @@ -3,8 +3,10 @@ import logging import json +srcDir=os.path.dirname(__file__) + logging.basicConfig(format='%(asctime)s %(levelname)s: %(message)s', level=logging.DEBUG) -with open(os.path.join(os.path.dirname(__file__), "..", "config.json")) as f: +with open(os.path.join(srcDir, "..", "config.json")) as f: cfgFile=json.load(f) class misc: @@ -12,6 +14,9 @@ class misc: version=(0,0,0) defaultImage=file.get("defaultImage", 0) + _imgDir=file.get("imgDir","../images") + imgDir=_imgDir if os.path.isabs(_imgDir) else os.path.join(srcDir,_imgDir) + class gui: file=cfgFile["gui"] showBigPoints=file.get("showBigPoints", False) diff --git a/src/core.py b/src/core.py --- a/src/core.py +++ b/src/core.py @@ -21,10 +21,9 @@ class Core: self._ownMessages=MsgQueue(self._handleEvent) self._guiMessages=MsgQueue() - self._imgDir=os.path.join(os.path.dirname(__file__), "..","images") - self._imgs=sorted(os.listdir(self._imgDir)) + self._imgs=sorted(os.listdir(cfg.misc.imgDir)) self._imgIndex=cfg.misc.defaultImage - imgPath=os.path.join(self._imgDir,self._imgs[self._imgIndex]) + imgPath=os.path.join(cfg.misc.imgDir,self._imgs[self._imgIndex]) self._frame=PIL.Image.open(imgPath) self._guiProc=multiprocessing.Process(name="gui", target=gui, args=(self._guiMessages,self._ownMessages)) @@ -42,7 +41,7 @@ class Core: def relativeFrame(self,step): self._imgIndex=(self._imgIndex+step)%len(self._imgs) - imgPath=os.path.join(self._imgDir,self._imgs[self._imgIndex]) + imgPath=os.path.join(cfg.misc.imgDir,self._imgs[self._imgIndex]) self._frame=PIL.Image.open(imgPath) self._guiMessages.send("setCurrentFrame",(self._frame.copy(),)) self.analyze() @@ -54,6 +53,7 @@ class Core: self._guiMessages.send("setGameState",(self.detector.board,)) self.go.transitionMove(self.detector.board) + log.debug("game record: %s",self.go._record) else: log.info("illegal position detected") diff --git a/src/gamerecord.py b/src/gamerecord.py --- a/src/gamerecord.py +++ b/src/gamerecord.py @@ -1,7 +1,4 @@ -import logging as log - - -colorNames={1:"B",-1:"W"} +from util import colorNames class Point: diff --git a/src/go.py b/src/go.py --- a/src/go.py +++ b/src/go.py @@ -1,13 +1,9 @@ import logging as log +from util import EMPTY,BLACK,WHITE,colorNames from gamerecord import GameRecord -EMPTY=0 -BLACK=1 -WHITE=-1 - - class Go: ## Initializes self.board to a list[r][c]=EMPTY. def __init__(self,boardSize=19): @@ -24,7 +20,7 @@ class Go: # @param color BLACK or WHITE # @return True on success, False on failure (illegal move) def move(self,color,row,col): - if color!=self.toMove: log.warning("move by %s out of order",color) + if color!=self.toMove: log.warning("move by %s out of order",colorNames[color]) if self.board[row][col]!=EMPTY: return False self.board[row][col]=color diff --git a/src/util.py b/src/util.py --- a/src/util.py +++ b/src/util.py @@ -2,6 +2,13 @@ import multiprocessing import logging as log +EMPTY=0 +BLACK=1 +WHITE=-1 + +colorNames={BLACK:"B",WHITE:"W"} + + class MsgQueue: def __init__(self,handler=None): self._queue=multiprocessing.Queue()