Les premiers pas d'une souris.py
À propos du fichier
- Type de fichier
- Fichier PY de 17 Ko (text/x-python)
- Confidentialité
- Fichier public, envoyé le 23 février 2016 à 16:26, depuis l'adresse IP 88.160.x.x (France)
- Sécurité
- Ne contient aucun Virus ou Malware connus - Dernière vérification: 3 jours
- Statistiques
- La présente page de téléchargement a été vue 823 fois depuis l'envoi du fichier
- Page de téléchargement
-
Aperçu du fichier
from time import *
from tkinter import *
from random import *
x = 20# Indique la position x initiale du premier carré
y = 20# Indique la position y initiale du premier carré
r = 10
Nmbrx = 30 # Définit en nombre de carré la Largeur de la box
Nmbry = 20 # Définit en nombre de carré la Hauteur de la box
xSave = 20 # Indique la position x initiale du Sauveteur
ySave = 20 # Indique la position y initiale du sauveteur
IDSauveteur = ""
xPoint = xSave # La position du pointeur en x
yPoint = ySave # La position du pointeur en y
deplacement = []
num = 0
ineg = 0
RETURN = 0
ISSUE = 1
CREATE = FALSE
REPLACE = FALSE
PUTFINISH = FALSE
FINISH = FALSE
def Quitter(event):
cadre.destroy()
def Destroy():
Canevas.delete("wall")
def Create():
global PLACE, CREATE, IDENT, BOUGER, PUTFINISH
CREATE = TRUE
PUTFINISH = FALSE
def PutFinish():
global PLACE, CREATE, IDENT, BOUGER, PUTFINISH
CREATE = FALSE
PUTFINISH = TRUE
def Check():
global IDSauveteur , xSave, ySave,r, TAGCaseTop, TAGCaseBot, TAGCaseRight, TAGCaseLeft
CaseTop = Canevas.find_closest (xSave, ySave - 2 * r, halo = None, start = None)
CaseTop = str(CaseTop)[1:len(str(CaseTop))-2]
TAGCaseTop = Canevas.gettags (CaseTop)
print ("Le Tag de la caseTOP est :" , TAGCaseTop)
CaseBot = Canevas.find_closest (xSave, ySave + 2*r , halo = None, start = None)
CaseBot = str(CaseBot)[1:len(str(CaseBot))-2]
TAGCaseBot = Canevas.gettags (CaseBot)
print ("Le Tag de la caseBOT est :" , TAGCaseBot)
CaseRight = Canevas.find_closest (xSave + 2 * r, ySave, halo = None, start = None)
CaseRight = str(CaseRight)[1:len(str(CaseRight))-2]
TAGCaseRight = Canevas.gettags (CaseRight)
print ("Le Tag de la caseRIGHT est :" , TAGCaseRight)
CaseLeft = Canevas.find_closest (xSave- 2 * r, ySave , halo = None, start = None)
CaseLeft = str(CaseLeft)[1:len(str(CaseLeft))-2]
TAGCaseLeft = Canevas.gettags (CaseLeft)
print ("Le Tag de la caseLEFT est :" , TAGCaseLeft)
return TAGCaseTop, TAGCaseBot, TAGCaseRight, TAGCaseLeft
def CheckChien():
global IDChien , x, y,r, TAGCaseTop, TAGCaseBot, TAGCaseRight, TAGCaseLeft
CaseTop = Canevas.find_closest (x, y - 2 * r, halo = None, start = None)
CaseTop = str(CaseTop)[1:len(str(CaseTop))-2]
TAGCaseTop = Canevas.gettags (CaseTop)
print ("Le Tag de la caseTOP est :" , TAGCaseTop)
CaseBot = Canevas.find_closest (x, y + 2 * r, halo = None, start = None)
CaseBot = str(CaseBot)[1:len(str(CaseBot))-2]
TAGCaseBot = Canevas.gettags (CaseBot)
print ("Le Tag de la caseBOT est :" , TAGCaseBot)
CaseRight = Canevas.find_closest (x + 2 * r, y, halo = None, start = None)
CaseRight = str(CaseRight)[1:len(str(CaseRight))-2]
TAGCaseRight = Canevas.gettags (CaseRight)
print ("Le Tag de la caseRIGHT est :" , TAGCaseRight)
CaseLeft = Canevas.find_closest (x- 2 * r, y , halo = None, start = None)
CaseLeft = str(CaseLeft)[1:len(str(CaseLeft))-2]
TAGCaseLeft = Canevas.gettags (CaseLeft)
print ("Le Tag de la caseLEFT est :" , TAGCaseLeft)
return TAGCaseTop, TAGCaseBot, TAGCaseRight, TAGCaseLeft
def Return():
global TAGCaseTop, TAGCaseBot, TAGCaseRight, TAGCaseLeft, ySave, xSave, RETURN, ISSUE, deplacement, num, ineg
liste = []
bouger = 0
i = 0
print (deplacement)
print (num)
if RETURN == 1:
bouger = deplacement [num-1 - 2 * ineg]
if bouger == 1:
ySave = ySave + 2*r
Canevas.coords(IDSauveteur, xSave-r, ySave-r, xSave+r, ySave+r) #Repositionne Le sauveteur avec les nouvelles coordonées
Canevas.addtag_closest ("Block", xSave, ySave - 2*r )
deplacement.append (3)
elif bouger == 2:
xSave = xSave - 2*r
Canevas.coords(IDSauveteur, xSave-r, ySave-r, xSave+r, ySave+r) #Repositionne Le sauveteur avec les nouvelles coordonées
Canevas.addtag_closest ("Block", xSave + 2*r , ySave )
deplacement.append (4)
elif bouger == 3:
ySave = ySave - 2*r
Canevas.coords(IDSauveteur, xSave-r, ySave-r, xSave+r, ySave+r) #Repositionne Le sauveteur avec les nouvelles coordonées
Canevas.addtag_closest ("Block", xSave, ySave + 2*r )
deplacement.append (1)
elif bouger == 4:
xSave = xSave + 2*r
Canevas.coords(IDSauveteur, xSave-r, ySave-r, xSave+r, ySave+r) #Repositionne Le sauveteur avec les nouvelles coordonées
Canevas.addtag_closest ("Block", xSave - 2*r , ySave)
deplacement.append (2)
else:
RETURN = 1
ISSUE = 0
RETURN = 0
ineg += 1
num += 1
cadre.update()
def MvmtFree():
global TAGCaseTop, TAGCaseBot, TAGCaseRight, TAGCaseLeft, ySave, xSave, RETURN, deplacement, ineg, num
liste = []
i = 0
bouger = 0
if str(TAGCaseTop) == "('way',)":
print("Top libre")
liste.append (1)
i += 1
if str(TAGCaseRight) == "('way',)":
print("Right libre")
liste.append (2)
i += 1
if str(TAGCaseBot) == "('way',)":
print("Bot libre")
liste.append (3)
i += 1
if str(TAGCaseLeft) == "('way',)" or str(TAGCaseLeft) == "('finish',)":
print("Left libre")
liste.append (4)
i += 1
if i != 0 :
ineg = 0
bouger = choice(liste)
print (bouger)
if bouger == 1:
ySave = ySave - 2*r
Canevas.coords(IDSauveteur, xSave-r, ySave-r, xSave+r, ySave+r) #Repositionne Le sauveteur avec les nouvelles coordonées
Canevas.addtag_closest ("Vu", xSave, ySave + 2*r )
deplacement.append (1)
num += 1
elif bouger == 2:
xSave = xSave + 2*r
Canevas.coords(IDSauveteur, xSave-r, ySave-r, xSave+r, ySave+r) #Repositionne Le sauveteur avec les nouvelles coordonées
Canevas.addtag_closest ("Vu", xSave - 2*r , ySave)
deplacement.append (2)
num += 1
elif bouger == 3:
ySave = ySave + 2*r
Canevas.coords(IDSauveteur, xSave-r, ySave-r, xSave+r, ySave+r) #Repositionne Le sauveteur avec les nouvelles coordonées
Canevas.addtag_closest ("Vu", xSave, ySave - 2*r )
deplacement.append (3)
num += 1
elif bouger == 4:
xSave = xSave - 2*r
Canevas.coords(IDSauveteur, xSave-r, ySave-r, xSave+r, ySave+r) #Repositionne Le sauveteur avec les nouvelles coordonées
Canevas.addtag_closest ("Vu", xSave + 2*r , ySave )
deplacement.append (4)
num += 1
else:
print ("Vous etes bloqué")
RETURN = 1
cadre.update()
def CheckFinish():
global IDSauveteur , xSave, ySave,r, TAGCaseTop, TAGCaseBot, TAGCaseRight, TAGCaseLeft, FINISH
if str(TAGCaseTop) == "('finish',)":
ySave = ySave - 2*r
Canevas.coords(IDSauveteur, xSave-r, ySave-r, xSave+r, ySave+r) #Repositionne Le sauveteur avec les nouvelles coordonées
Canevas.addtag_closest ("Vu", xSave, ySave + 2*r )
FINISH = 1
if str(TAGCaseRight) == "('finish',)":
xSave = xSave + 2*r
Canevas.coords(IDSauveteur, xSave-r, ySave-r, xSave+r, ySave+r) #Repositionne Le sauveteur avec les nouvelles coordonées
Canevas.addtag_closest ("Vu", xSave - 2*r , ySave)
FINISH = 1
if str(TAGCaseBot) == "('finish',)":
ySave = ySave + 2*r
Canevas.coords(IDSauveteur, xSave-r, ySave-r, xSave+r, ySave+r) #Repositionne Le sauveteur avec les nouvelles coordonées
Canevas.addtag_closest ("Vu", xSave, ySave - 2*r )
FINISH = 1
if str(TAGCaseLeft) == "('finish',)" :
xSave = xSave - 2*r
Canevas.coords(IDSauveteur, xSave-r, ySave-r, xSave+r, ySave+r) #Repositionne Le sauveteur avec les nouvelles coordonées
Canevas.addtag_closest ("Vu", xSave + 2*r , ySave )
FINISH = 1
def Finish():
print ("Votre petite souris a trouvé la sortie.")
def Bouger():
global TAGCaseTop, TAGCaseBot, TAGCaseRight, TAGCaseLeft, ySave, xSave, RETURN, ISSUE, FINISH, ISSUE
while FINISH == 0 and ISSUE == 1:
Check ()
CheckFinish()
print (RETURN)
print (FINISH)
if FINISH == 1:
Finish ()
elif FINISH == 0:
if RETURN == 0:
MvmtFree ()
if RETURN == 1:
Return ()
Canevas.dtag ("Vu", "way")
Canevas.dtag ("Block", "Vu")
Canevas.dtag ("Block","way")
Canevas.dtag ("wall","Vu")
Canevas.itemconfigure ("Vu", outline= "#000000", fill= "#0000CC" )
Canevas.itemconfigure ("Block", outline= "#000000", fill= "#000000" )
cadre.update()
sleep (0.2)
"""Cette fonction va générer la map automatiquement, en créant un pointeur qui créera la map."""
def Auto():
global TAGCaseTop, TAGCaseBot, TAGCaseRight, TAGCaseLeft, y, x, RETURN
Canevas.create_rectangle(x-r, y-r, x+r, y+r, outline='black', fill= "#FFFF99" ) # Va placer le rectangle par rapport aux positions initiales
IDChien = Canevas.find_closest (x,y , halo = None, start = None) #Va récupérer L'id du chien.
IDChien = str(IDChien)[1:len(str(IDChien))-2] # Permet de retourner l'ID du chien sans les parenthèse et sans la virgule
print (IDChien)
Canevas.addtag_withtag ("chien", IDChien)
b = 0
while b != 200:
CheckChien ()
liste = []
i = 0
bouger = 0
if str(TAGCaseTop) == "('wall',)" :
print("Top libre")
liste.append (1)
i += 1
if str(TAGCaseRight) == "('wall',)" :
print("Right libre")
liste.append (2)
i += 1
if str(TAGCaseBot) == "('wall',)" :
print("Bot libre")
liste.append (3)
i += 1
if str(TAGCaseLeft) == "('wall',)" :
print("Left libre")
liste.append (4)
i += 1
if i != 0 :
bouger = choice(liste)
print (bouger)
if bouger == 1:
y = y - 2*r
Canevas.coords(IDChien, x-r, y-r, x+r, y+r) #Repositionne Le chien avec les nouvelles coordonées
Canevas.addtag_closest ("way", x, y + 2*r )
elif bouger == 2:
x = x + 2*r
Canevas.coords(IDChien, x-r, y-r, x+r, y+r)
Canevas.addtag_closest ("way", x - 2*r , y)
elif bouger == 3:
y = y + 2*r
Canevas.coords(IDChien, x-r, y-r, x+r, y+r)
Canevas.addtag_closest ("way", x ,y - 2*r )
elif bouger == 4:
x = x - 2*r
Canevas.coords(IDChien, x-r, y-r, x+r, y+r)
Canevas.addtag_closest ("way", x + 2*r , y )
b += 1
Canevas.dtag ("way", "wall")
Canevas.itemconfigure ("way", outline= None, fill= "#999999" )
def Identification():
global PLACE, CREATE, IDENT, BOUGER
PLACE = FALSE
CREATE = FALSE
IDENT = TRUE
BOUGER = FALSE
def clavier(event):
"""Cette fonctin va analyser la touche entrée et faire des actions en conséquence."""
global coords , IDSauveteur, xSave, ySave
touche = event.keysym #La variable touche récupère la valeur de la touche entrée
"""Les quatres diffférents déplacements possibles"""
if touche == "Up" and ySave - 2*r > 0:
ySave = ySave - 2*r
elif touche == "Down" and ySave + 2*r < Hauteur:
ySave = ySave + 2*r
elif touche == "Right" and xSave + 2*r < Largeur:
xSave = xSave + 2*r
elif touche == "Left" and xSave - 2*r > 0:
xSave = xSave -2*r
Canevas.coords(IDSauveteur, xSave-r, ySave-r, xSave+r, ySave+r) #Repositionne Le sauveteur avec les nouvelles coordonées
# Pour quitter le programme
if touche == "Escape":
cadre.destroy()
def Clic(event):
global r, sauveteur, IDSauveteur, PLACE, CREATE, IDENT, BOUGER, REPLACE
# Va chercher les valeurs des coordonées de la souris X et Y
X = event.x
Y = event.y
if PUTFINISH == TRUE:
#Formation
# Va donner au carre le plus proche des coordonées de la souris le TAG "finish"
Canevas.addtag_withtag('wall', 'finish')
Canevas.dtag ("wall", "finish")
Canevas.itemconfigure ("wall", outline= "#000000", fill= "#00DD00" )
Canevas.addtag_closest ("finish", X, Y)
if CREATE == TRUE:
#Formation
# Va donner au carre le plus proche des coordonées de la souris le TAG "way"
Canevas.addtag_closest ("way", X, Y)
"""CLEAN"""
Canevas.dtag ("way", "wall")
Canevas.dtag ("sauveteur", "way")
Canevas.dtag ("sauveteur", "finish")
Canevas.dtag ("finish", "way")
Canevas.dtag ("finish", "wall")
Canevas.itemconfigure ("sauveteur", outline= "#000000", fill= None )
Canevas.itemconfigure ("finish", outline= "#000000", fill= "#FFFF00" )
Canevas.itemconfigure ("wall", outline= "#000000", fill= "#00DD00" )
Canevas.itemconfigure ("way", outline= None, fill= "#999999" )
def Generer():
""" Va Génerer la salle """
global x , y , Largeur , Hauteur, item, r, IDSauveteur,xSave,ySave, FINISH, ISSUE
FINISH = 0
ISSUE = 1
Canevas.delete(ALL)
xSave = 20 # Indique la position x initiale du Sauveteur
ySave = 20 # Indique la position y initiale du sauveteur
#Cette conndition permet de remplir le tableau
while x <= Largeur-2 * r and y<= Hauteur-2 * r:
# Va crer un rectangle au niveaudu curseur.
item = Canevas.create_rectangle(x-r, y-r, x+r, y+r, outline='black', fill= "#00DD00" )
# Va donner a tous les rectangles créent le tag item
# Deplace le curseur
if (x < Largeur - 2 * r):
x = x + 2 * r
y = y
# Fait les retours à la ligne si nécessaires
else:
x = 2 * r
y = y + 2 * r
print("Création de",item,"rectangles")
x = 2 * r
y = 2 * r
Canevas.addtag_all ("wall")
"""------------------------Placer Le sauveteur-----------------------------"""
#Formation
""" Va placer le sauveteur"""
Canevas.create_rectangle(xSave-r, ySave-r, xSave+r, ySave+r, outline='black', fill= "#FF0000" ) # Va placer le rectangle par rapport aux positions initiales
IDSauveteur = Canevas.find_closest (xSave,ySave , halo = None, start = None) #Va récupérer L'id du sauveteur.
IDSauveteur = str(IDSauveteur)[1:len(str(IDSauveteur))-2] # Permet de retourner l'ID du sauveteur sans les parenthèse et sans la virgule
print (IDSauveteur)
Canevas.addtag_withtag ("sauveteur", IDSauveteur)
def Effacer():
""" Clean la zone graphique """
Canevas.delete(ALL)
# Création de la fenêtre principale (main window)
cadre = Tk()
cadre.title('Pathfinder')
# Création d'un widget Canvas (zone graphique)
Largeur = r * 2 * Nmbrx
Hauteur = r * 2 * Nmbry
Canevas = Canvas(cadre, width = Largeur, height =Hauteur, bg ='white')
Canevas.pack(padx =5, pady =5)
# Création d'un widget Button (bouton Go)
BoutonGo = Button(cadre, text ='Go', command = Generer)
BoutonGo.pack(side = LEFT, padx = 10, pady = 10)
BoutonGo = Button(cadre, text ='Create', command = Create)
BoutonGo.pack(side = LEFT, padx = 10, pady = 10)
# Création d'un widget Auto (bouton Auto)
BoutonAuto = Button(cadre, text ='Auto', command = Auto)
BoutonAuto.pack(side = LEFT, padx = 5, pady = 5)
BoutonGo = Button(cadre, text ='PutFinish', command = PutFinish)
BoutonGo.pack(side = LEFT, padx = 10, pady = 10)
BoutonEffacer = Button(cadre, text ='Destroy', command = Destroy)
BoutonEffacer.pack(side = LEFT, padx = 5, pady = 5)
# Création d'un widget Button (bouton Effacer)
BoutonEffacer = Button(cadre, text ='Effacer', command = Effacer)
BoutonEffacer.pack(side = LEFT, padx = 5, pady = 5)
# Création d'un widget Button (bouton Identification)
BoutonIdentification = Button(cadre, text ='Identification', command = Identification)
BoutonIdentification.pack(side = LEFT, padx = 5, pady = 5)
# Création d'un widget Button (bouton Check)
BoutonCheck = Button(cadre, text ='Check', command = Check)
BoutonCheck.pack(side = LEFT, padx = 5, pady = 5)
# Création d'un widget Button (bouton Bouger)
BoutonBouger = Button(cadre, text ='Bouger', command = Bouger)
BoutonBouger.pack(side = LEFT, padx = 5, pady = 5)
# Création d'un widget Button (bouton Quitter)
BoutonQuitter = Button(cadre, text ='Quitter', command = cadre.destroy)
BoutonQuitter.pack(side = LEFT, padx = 5, pady = 5)
Canevas.focus_set()
Canevas.bind('<Button-1>',Clic) # évévement clic gauche (press)
Canevas.bind('<B1-Motion>',Clic) # évévement clic gauche (enfoncé)
Canevas.bind("<Key>", clavier) #Récupère la touche entrée
cadre.mainloop()
Partager le fichier Les premiers pas d'une souris.py sur le Web et les réseaux sociaux:
Télécharger le fichier Les premiers pas d'une souris.py
Télécharger Les premiers pas d'une souris.py