from tkinter import * class Tile: """A representation of a tile on the display""" shapes = {'circle' : 'o', 'cross' : 'x', 'triangle' : '^', 'none' : ' ', 'square' : '#', 'vertical' : '|', 'horizontal' : '-'} def __init__(self, bgroundColor, fgroundColor = 'white', fgroundShape = ' '): self.bgc = bgroundColor self.fgc = fgroundColor self.fgs = fgroundShape def paint(self, display, x, y): #display being a canvas if type(display) != Canvas: raise TypeError('Display must be a tkinter.Canvas.') else: tag = '(' + str(int(x)) + ', ' + str(int(y)) + ')' display.delete(tag) #delete the old tile before creating a new one. if self.bgc != 'clear': display.create_rectangle((x*32, y*32, x*32+32, y*32+32), fill = self.bgc, width = 0, tags = (tag)) if self.fgs == Tile.shapes['triangle']: display.create_polygon((x*32+15, y*32+2, x*32+2, y*32+30, x*32+30, y*32+30, x*32+16, y*32+2), fill = self.fgc, width = 0, tags = (tag)) elif self.fgs == Tile.shapes['circle']: display.create_oval((x*32+2, y*32+2, x*32+30, y*32+30), fill = self.fgc, width = 0, tags = (tag)) elif self.fgs == Tile.shapes['cross']: display.create_line((x*32+2, y*32+2, x*32+30, y*32+30), fill = self.fgc, width = 3, tags = (tag)) display.create_line((x*32+30, y*32+2, x*32+2, y*32+30), fill = self.fgc, width = 3, tags = (tag)) elif self.fgs == Tile.shapes['square']: display.create_rectangle((x*32+2, y*32+2, x*32+30, y*32+30), fill = self.fgc, width = 0, tags = (tag)) elif self.fgs == Tile.shapes['vertical']: display.create_line((x*32+16, y*32, x*32+16, y*32+32), fill = self.fgc, width = 3, tags = (tag)) elif self.fgs == Tile.shapes['horizontal']: display.create_line((x*32, y*32+16, x*32+32, y*32+16), fill = self.fgc, width = 3, tags = (tag)) else: pass