""" Build the maze and pathway """ from Tkinter import * import time root = Tk() root.title("Background") canvasOne = Canvas(width = 800, height = 700, bg = 'black') canvasOne.pack() def createWall((x0, y0), (x1, y1), colour = 'blue', width = 3): """ create a double wall outlining the maze. """ canvasOne.create_line(x0, y0, x1, y1, width = width, fill = colour) canvasOne.create_line(350, 630, 450, 630, width = 3, fill = 'gold', tag = 'gate') def buildPathHorizontal((val1, val2, number), increment = 20, delta = 5): """ build the horizontal path through the maze, small white squares""" for i in range(number): val1 += increment x, y = val1, val2 deltax = x + delta deltay = y + delta canvasOne.create_rectangle(x, y, deltax, deltay, fill = 'white') def buildPathVertical((val1, val2, number), increment = 20, delta = 5): """ build the vertical path through the maze, small white squares""" for i in range(number): val2 += increment x, y = val1, val2 deltax = x + delta deltay = y + delta canvasOne.create_rectangle(x, y, deltax, deltay, fill = 'white') outerWall = [(450, 640), (475, 640), (475, 640), (475, 690), (475, 690), (790, 690), (790, 690), (790, 530), (790, 530), (660, 530), (660, 530), (660, 360), (790, 360), (790, 10), (790, 10), (10, 10), (10, 10), (10, 360), (10, 360), (150, 360), (150, 360), (150, 530), (150, 530), (10, 530), (10, 530), (10, 690), (10, 690), (325, 690), (325, 690), (325, 640), (325, 640), (350, 640), (350, 630), (350, 630), (315, 630), (315, 680), (20, 680), (20, 680), (20, 560), (20, 540), (160, 540), (160, 540), (160, 350), (20, 350), (20, 350), (20, 20), (20, 20), (380, 20), (380, 20), (380, 130), (380, 130), (420, 130), (420, 130), (420, 20), (420, 20), (780, 20), (780, 350), (780, 350), (650, 350), (650, 350), (650, 540), (650, 540), (780, 540), (780, 540), (780, 680), (780, 680), (485, 680), (485, 630), (485, 630), (450, 630), (450, 630), (450, 640)] topLeftBox = [(130, 105), (130, 125), (130, 125), (250, 125), (250, 125), (250, 105), (130, 105), (250, 105)] secondTopLeftBox = [(160, 215), (160, 225), (160, 215), (230, 215), (230, 215), (230, 225), (160, 225), (230, 225)] topRightBox = [(545, 105), (545, 125), (545, 125), (665, 125), (665, 125), (665, 105), (545, 105), (665, 105)] secondTopRightBox = [(560, 215), (560, 225), (560, 215), (625, 215), (625, 215), (625, 225), (625, 225), (560, 225)] middleT = [(345, 240), (455, 240), (345, 240), (345, 240), (345, 250), (395, 250), (395, 250), (395, 335), (395, 335), (405, 335), (405, 335), (405, 250), (405, 250), (455, 250), (455, 250), (455, 240)] leftSidewaysT = [(275, 340), (275, 500), (275, 340), (285, 340), (285, 340), (285, 415), (285, 415), (345, 415), (345, 415), (345, 425), (285, 425), (345, 425), (285, 425), (285, 500), (275, 500), (285, 500)] rightSidewaysT = [(525, 340), (525, 500), (525, 340), (515, 340), (515, 340), (515, 415), (515, 415), (455, 415), (455, 415), (455, 425), (515, 425), (455, 425), (515, 425), (515, 500), (515, 500), (525, 500)] walls = [outerWall] for wall in walls: for i in range(len(wall) - 1): createWall(outerWall[i], outerWall[i+1]) boxes = [topLeftBox, secondTopLeftBox, topRightBox, secondTopRightBox] for box in boxes: for i in range(len(box)-1): createWall(topLeftBox[i], topLeftBox[i+1]), createWall(secondTopLeftBox[i], secondTopLeftBox[i+1]), createWall(topRightBox[i], topRightBox[i+1]), createWall(secondTopRightBox[i], secondTopRightBox[i+1]) Ts = [middleT, leftSidewaysT, rightSidewaysT] for t in Ts: for i in range(len(t)-1): createWall(middleT[i], middleT[i+1]), createWall(leftSidewaysT[i], leftSidewaysT[i+1]), createWall(rightSidewaysT[i], rightSidewaysT[i+1]) horizontalPath = [(40, 610, 9), (60, 290, 14), (60, 50, 12), (60, 170, 33), (440, 290, 1), (440, 290, 14), (480, 50, 12), (340, 370, 5), (220, 570, 18), (580, 610, 8), (0,0,0)] verticalPath = [(60, 30, 13), (220, 290, 15), (300, 50, 11), (500, 30, 13), (340, 290, 4), (340, 290, 4), (400, 370, 9), (460, 290, 4), (580, 290, 16), (720, 30, 13), (0,0,0)] paths = [horizontalPath, verticalPath] for path in paths: for i in range(len(path)-1): buildPathHorizontal(horizontalPath[i]), buildPathVertical(verticalPath[i]) image = 'DustY.gif' photo = PhotoImage(file=image) xGif = 100 yGif = 600 ph = canvasOne.create_image(xGif, yGif, image = photo) #ph class Images: def __init__(self, xGif, yGif, ph): self.xGif = xGif self.yGif = yGif self.ph = ph def direction(self ):#, event): if event.x <= xGif+10 and event.x >= xGif-10: #+/- tolerance for innacurate click newY = event.y print 'newY = ', newY onClickVertical(newY, self.xGif, self.yGif) if event.y <= yGif+10 and event.y >= yGif-10: #+/- tolerance for innacurate click newX = event.x print 'newX = ', newX onClickHorizontal(newX, self.xGif, self.yGif) def onClickVertical(self, newY): for i in range(newY): yGif += .8 canvasOne.coords(self.ph, xGif, yGif) time.sleep(.001) canvasOne.update() def onClickHorizontal(self, newX): for i in range(newX): xGif += .8 canvasOne.coords(self.ph, xGif, yGif) time.sleep(.001) canvasOne.update() canvasOne.bind("", Images.direction) root.mainloop()