Files
@ 782476e472ab
Branch filter:
Location: OneEye/src/gamerecord.py - annotation
782476e472ab
1.2 KiB
text/x-python
configurable image directory, refactored constants
782476e472ab b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe b197a19e4afe | from util import colorNames
class Point:
def __init__(self,c,r):
self.r=r
self.c=c
def __iter__(self):
yield self.c
yield self.r
def __str__(self):
a=ord("a")
return chr(a+self.c)+chr(a+self.r)
class GameRecord:
def __init__(self):
self.playerB=""
self.playerW=""
self.root=Node()
self.currNode=self.root
def move(self,color,row,col):
if color not in colorNames:
raise ValueError("invalid color: {0}".format(color))
colorName=colorNames[color]
res=Node()
res.properties[colorName]=Point(col,row)
self.currNode.children.append(res)
self.currNode=res
return res
def __str__(self):
res=["("]
stack=[self.root]
while len(stack)!=0:
v=stack.pop()
res.append(v)
if v==")": continue
if len(v.children)>1:
res.append("(")
stack.append(")")
stack.extend(reversed(v.children))
res.append(")")
return "".join(str(x) for x in res)
class Node:
def __init__(self):
self.properties=dict()
self.parent=None
self.children=[]
## Returns textual representation of the Node itself, but disregards its children.
def __str__(self):
return ";" + "".join("{0}[{1}]".format(k,str(p)) for (k,p) in self.properties.items())
|