Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import*
- from math import*
- # Creation de la fenêtre
- mainF = Tk()
- mainF.title("Pathfinding - A* Algorithm")
- mainF.aspect(1,1,1,1)
- # Variables à modifier selon les coordonnées de départ
- a,b = int(input("x0 = ")), int(input("y0 = "))
- c,d = int(input("x1 = ")), int(input("y1 = "))
- coord1=[a,b]
- coord2=[c,d]
- # Le pas doit dépendre des hauteurs/largeurs pour rentrer dans l'écran.
- # On va dire que 900x900 est la maximum, donc à changer (je met 50 pour tester).
- pas=50
- # Ce sont les "réelles" largeur/hauteur (pas algébrique bien sûr)
- largeur_bc = abs(coord2[0]) + abs(coord1[0])
- hauteur_bc = abs(coord2[1]) + abs(coord1[1])
- # La taille de la fenêtre, REEL * PAS
- mainF.geometry('%dx%d' % (largeur_bc*pas, hauteur_bc*pas))
- # Clique droit pour remettre la bonne taille de fenêtre
- def setup(event):
- mainF.geometry('%dx%d' % (largeur_bc*pas, hauteur_bc*pas))
- print("largeur=",largeur_bc*pas,"hauteur=",hauteur_bc*pas)
- return
- # Clique gauche pour tracer à nouveau les lignes
- # Objectif principal : assimiler "liste_selon_hauteur" et "liste_selon_largeur" aux vrais coordonnées.
- # Une fonction s'impose
- def create_grid(event):
- mainCanvas.delete("ligne")
- # On doit pouvoir générer le bon nombre de carré (en ligne, et en colonne)
- # Là, c'est bon !
- liste_selon_hauteur=[]
- # Génération de lignes sur toute la hauteur (haut en bas), avec un pas proportionnel aux coordonnées
- for i in range(0,hauteur,pas_l):
- mainCanvas.create_line([(0,i), (largeur,i)], tag="ligne")
- liste_selon_hauteur.append([i])
- # Génération de lignes sur toute la largeur (gauce à droite), avec un pas proportionnel aux coordonnées
- liste_selon_largeur=[]
- for i in range(0,largeur,pas_h):
- mainCanvas.create_line([(i,0), (i,hauteur)], tag="ligne")
- liste_selon_largeur.append([i])
- print(liste_selon_hauteur,liste_selon_largeur)
- #print("x=",event.x,"y=",event.y)
- # Défini ce qu'il faut pour qu'il y a un nombre de carré exact.
- # C'est ça la magie : tu rentres un truc qui a l'air random, ça te rend ce que tu voulais.
- def configure(event):
- global hauteur,largeur,pas_h,pas_l
- hauteur, largeur = event.height, event.width
- pas_h= int(hauteur/hauteur_bc)
- pas_l= int(largeur/largeur_bc)
- mainCanvas=Canvas(mainF,bg="lightgray")
- mainCanvas.pack(fill=BOTH,expand=1)
- mainF.bind('<Button-1>',create_grid)
- mainF.bind('<Button-3>',setup)
- mainCanvas.bind("<Configure>",configure)
- mainF.mainloop()
- mainCanvas.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement