Bludiště popis – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Bludiště popis – Python – Fórum – Programujte.comBludiště popis – Python – Fórum – Programujte.com

 

Kralon0
Duch
6. 1. 2014   #1
-
0
-

Dobrý den, potřeboval bych docela velkou pomoc mám script o 180 řádkách a potřebujval bych aby se mi na něj někdo kouknul a k řádku či více řádkům náráz napsal poznámky co se tam právě vytváří/děje. Pro mě je to španělská vesnice 

"""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), (320, 370, 6), (300, 510, 9), (220, 570, 5), (460, 570, 5), (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, 6), (320, 510, 3), (460, 290, 4), (480, 510, 3), (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 = 'Hulk.gif'
photo = PhotoImage(file=image)
xGif = 100
yGif = 610
ph = canvasOne.create_image(xGif, yGif, image = photo)
graph = {(100, 610) : [(270, 610)],
         (270, 610) : [(270, 280), (270, 560), (100, 610)],
         (270, 560) : [(400, 550), (370, 560), (270, 280), (270, 610)],
         (270, 280) : [(110, 280), (300, 290), (380, 290), (270, 610)],
         (370, 560) : [(370, 500), (270, 280)],
         (370, 500) : [(450, 500), (370, 560)],
         (450, 500) : [(390, 300), (450, 370), (370, 500)],
         (450, 370) : [(390, 370), (450, 500)],
         (390, 370) : [(390, 290), (450, 370)],
         (390, 290) : [(350, 290), (390, 370)],
         (350, 290) : [(350, 170), (110, 280), (390, 290)],
         (350, 170) : [(110, 170), (350, 290), (350, 290)],
         (110, 280) : [(110, 170), (110, 40), (270, 280)],
         (110, 170) : [(350, 170), (110, 280)],
         (110, 40) : [(350, 40), (110, 170), (110, 280)],
         (350, 40) : [(350, 170), (110, 40)],
         (350, 170) : [(550, 170), (110, 170), (350, 40)],
         (550, 170) : [(550, 40), (550, 280), (350, 170), (750, 170)],
         (550, 40) : [(770, 40), (550, 40)],
         (550, 280) : [(510, 280), (520, 200), (520, 40)],
         (510, 280) : [(510, 360), (550, 280)],
         (510, 360) : [(450, 370), (510, 280)],
         (770, 40) : [(770, 280), (770, 170), (550, 40)],
         (770, 280) : [(630, 280), (550, 280), (470, 280), (770, 40)],
         (630, 280) : [(630, 610), (550, 280), (470, 280), (770, 280)],
         (630, 610) : [(790, 610), (630, 560), (630, 570), (630, 280)],
         (630, 560) : [(530, 560), (630, 280), (630, 610)],
         (530, 560) : [(530, 500), (630, 560)],
         (530, 500) : [(450, 500), (530, 370)],
         (450, 500) : [(450, 350), (530, 500)],
         (790, 610) : [(630, 610)]}
"""
find_all_paths is a greedy algorithm based function that will get the .gif moving on the
path. It returns the path for the .gif to follow. 
"""
def find_all_paths(graph, start, end, path=[]):
        path = path + [start]
        if start == end:
            return [path]
        if not graph.has_key(start):
            return []
        paths = []
        for node in graph[start]:
            if node not in path:
                newpaths = find_all_paths(graph, node, end, path)
                for newpath in newpaths:
                    paths.append(newpath)
        return paths
def move_gif(pic, x = xGif, y = yGif):
    endX = 790
    endY = 610
    mode = .001
    path = find_all_paths(graph, (x, y), (endX, endY))
    try:
        for i in path[7]:
            dest = list(i)
            newX = dest[0]
            newY = dest[1]
            if newX == x:
                while y != newY:
                    if y > newY:
                        y -= 2
                        canvasOne.coords(pic, x, y)
                        time.sleep(mode)
                        canvasOne.update()
                        path = find_all_paths(graph, (x, y), (endX, endY))
                    if y < newY:
                        y+=2
                        canvasOne.coords(pic, x, y)
                        time.sleep(mode)
                        canvasOne.update()
                        path = find_all_paths(graph, (x, y), (endX, endY))
            if newY == y:
                while x != newX:
                    if x > newX:
                        x -= 2
                        canvasOne.coords(pic, x, y)
                        time.sleep(mode)
                        canvasOne.update()
                        path = find_all_paths(graph, (x, y), (endX, endY))
                    if x < newX:
                        x += 2
                        canvasOne.coords(pic, x, y)
                        time.sleep(mode)
                        canvasOne.update()
                        path = find_all_paths(graph, (x, y), (endX, endY))
    except IndexError:
        print 'path: ' , path
        print "out of range"
 
move_gif(ph)        
root.mainloop()
Nahlásit jako SPAM
IP: 31.47.100.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý