Changeset - 9b2865fdffa0
[Not reviewed]
default
0 1 0
Laman - 6 years ago 2018-11-30 21:21:23

BoardView: coordinates, fixed variable padding
1 file changed with 15 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/gui/boardview.py
Show inline comments
 
from .resizablecanvas import ResizableCanvas
 
from go.core import BLACK,WHITE
 

	
 

	
 
## Handles and presents the game state as detected by the program.
 
class BoardView(ResizableCanvas):
 
	def __init__(self, master=None):
 
		super().__init__(master)
 

	
 
		self.configure(width=360,height=360,background="#ffcc00")
 

	
 
		self._padding=18
 
		self._padding=24
 
		self._cellWidth=(self._width-2*self._padding)/18
 
		self._cellHeight=(self._height-2*self._padding)/18
 

	
 
		self._drawGrid()
 

	
 
	def redrawState(self,gameState):
 
		self.delete("black","white")
 
		for r,row in enumerate(gameState):
 
			for c,point in enumerate(row):
 
				self._drawStone(r, c, point)
 

	
 
	def _drawGrid(self):
 
		padding=self._padding
 
		for i in range(19):
 
			self.create_line(padding,18*i+padding,self._width-padding,18*i+padding,tags="row",fill="#000000") # rows
 
			self.create_line(18*i+padding,padding,18*i+padding,self._height-padding,tags="col",fill="#000000") # cols
 
			self.create_line(padding,self._cellHeight*i+padding,self._width-padding,self._cellHeight*i+padding,tags="row",fill="#000000") # rows
 
			self.create_line(self._cellWidth*i+padding,padding,self._cellWidth*i+padding,self._height-padding,tags="col",fill="#000000") # cols
 

	
 
		self._drawStars()
 
		self._drawCoordinates()
 

	
 
	def _drawStars(self):
 
		radius=2
 

	
 
		for r in range(3,19,6):
 
			for c in range(3,19,6):
 
				x=c*self._cellHeight+self._padding
 
				y=r*self._cellWidth+self._padding
 
				self.create_oval(x-radius,y-radius,x+radius,y+radius,tags="star",fill='#000000')
 

	
 
	def _drawCoordinates(self):
 
		for i in range(19):
 
			letters="ABCDEFGHJKLMNOPQRST"
 
			textWidth=12
 
			# cols
 
			self.create_text(self._padding+i*self._cellWidth,self._padding-textWidth,text=letters[i],tags="coords")
 
			self.create_text(self._padding+i*self._cellWidth,self._height-self._padding+textWidth,text=letters[i],tags="coords")
 
			# rows
 
			self.create_text(self._padding-textWidth,self._padding+i*self._cellHeight,text=str(19-i),tags="coords")
 
			self.create_text(self._width-self._padding+textWidth,self._padding+i*self._cellHeight,text=str(19-i),tags="coords")
 

	
 
	## Draws a stone at provided coordinates.
 
	#
 
	#  For an unknown color draws nothing and returns False.
 
	#
 
	#  @param r row coordinate, [0-18], counted from top
 
	#  @param c column coordinate, [0-18], counted from left
 
	#  @param color color indicator, go.BLACK or go.WHITE
 
	def _drawStone(self, r, c, color):
 
		if color==BLACK:
 
			hexCode='#000000'
 
			tag="black"
 
		elif color==WHITE:
0 comments (0 inline, 0 general)