c=28
padding=15
highNumbers=True
class Svg:
content=""
footer=""
extension="svg"
padding=15
gridSize=28
highNumbers=True
def __init__(self):
self.content='''
\n"
grid=' \n'
# okraje desky
for i in (0,18):
self.content+=' \n'.format(self.padding, 18*self.gridSize+self.padding, self.gridSize*i+self.padding, self.gridSize*i+self.padding)
self.content+=' \n'.format(self.gridSize*i+self.padding, self.gridSize*i+self.padding, self.padding, 18*self.gridSize+self.padding)
# mřížka
for i in range(1,18):
self.content+=grid.format(self.padding, 18*self.gridSize+self.padding, c*i+self.padding, c*i+self.padding)
self.content+=grid.format(c*i+self.padding, c*i+self.padding, self.padding, 18*c+self.padding)
# hvězdy
for i in range(3):
for j in range(3):
self.content+=' \n'.format(padding+3*c+6*i*c, padding+3*c+6*j*c, 2)
def __str__(self):
return self.content+self.footer
def drawStone(self,x,y,color):
self.content+=' \n'.format(padding+x*c, padding+y*c, c/2-1, color)
def getFontSize(self,text):
if len(text)<2: return round(0.7*c)
elif len(text)<3: return round(0.55*c)
else: return round(0.4*c)
def writeLabel(self,x,y,label,color):
label=str(label)
fontSize=self.getFontSize(label)
self.content+=' {4}\n'.format(padding+x*c, padding+y*c+0.35*fontSize, color, fontSize, label)
def drawMove(self,x,y,label,color):
labelColor="w" if color=="b" else "b"
if (not self.highNumbers) and isinstance(label,int) and label%100!=0: label=label%100 # dost neobratná logika
self.drawStone(x,y,color)
self.writeLabel(x,y,label,labelColor)
def getContent(self):
return self.content+self.footer