Hébergeur de fichiers indépendant

Test Room.py

À propos

Type de fichier
Fichier PY de 12 Ko (text/x-python)
Confidentialité
Fichier public, envoyé le 21 février 2016 à 11:00, depuis l'adresse IP 90.28.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 382 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
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
RETURN = 0
ISSUE = 1
CREATE = FALSE
REPLACE = FALSE
FINISH = FALSE

def Quitter(event):
    cadre.destroy()
def Destroy():
    Canevas.delete("wall")
def Create():
    global PLACE, CREATE, IDENT, BOUGER, FINISH
    CREATE = TRUE
    FINISH = FALSE
    
def Finish():
    global PLACE, CREATE, IDENT, BOUGER, FINISH
    CREATE = FALSE
    FINISH = TRUE

    
def Check():
    global IDSauveteur , xSave, ySave,r, TAGCaseTop, TAGCaseBot, TAGCaseRight, TAGCaseLeft

    
    CaseTop = Canevas.find_closest (xSave, ySave - 20, 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 + 20, 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 + 20, 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- 20, 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 Return():
    global TAGCaseTop, TAGCaseBot, TAGCaseRight, TAGCaseLeft, ySave, xSave, RETURN, ISSUE
    bouger = 0
    if RETURN == 1:
        if str(TAGCaseTop) == "('Vu',)":
            print("Top Vu")
            bouger = 1
        if str(TAGCaseRight) == "('Vu',)":
            print("Right Vu")
            bouger = 2
        if str(TAGCaseBot) == "('Vu',)":
            print("Bot Vu")
            bouger = 3
        if str(TAGCaseLeft) == "('Vu',)":
            print("Left Vu")
            bouger = 4
        
    
        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 )
        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)
        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 )
        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 )
        else:
            
            RETURN = 1
            ISSUE = 0
        RETURN = 0
def MvmtFree():
    global TAGCaseTop, TAGCaseBot, TAGCaseRight, TAGCaseLeft, ySave, xSave, RETURN
    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 :
        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 )
    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)
    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 )
    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 )
    else:
        print ("Vous etes bloqué")
        RETURN = 1

def Attente():
    sleep (0.2)
def Bouger():
    global TAGCaseTop, TAGCaseBot, TAGCaseRight, TAGCaseLeft, ySave, xSave, RETURN, ISSUE
    #while ISSUE == 1:
        #Attente ()
    Check ()
    print (RETURN)
    if RETURN == 0:
        MvmtFree ()
    if RETURN == 1:
        Return ()
    
    
    
    Canevas.dtag ("Vu", "way")
    Canevas.dtag ("Block", "Vu")
    Canevas.itemconfigure ("Vu", outline= "#000000", fill= "#0000CC"  )
    Canevas.itemconfigure ("Block", outline= "#000000", fill= "#000000"  )
    
        
        
    
    print ("Il n'y a plus d'issus")
            
        

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":
        ySave = ySave - 2*r
    elif touche == "Down":
        ySave = ySave + 2*r
    elif touche == "Right":
        xSave = xSave + 2*r
    elif touche == "Left":
        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 FINISH == TRUE:
        #Formation
        """ Va Détruire le carré le plus proche de la souris"""
        # Va donner au carre le plus proche des coordonées de la souris le TAG "way"
        Canevas.addtag_withtag ("finish", "wall")
        Canevas.dtag ("way", "finish")
        Canevas.dtag ("wall", "finish")
   
        Canevas.addtag_closest ("finish", X, Y)
        # Va donner au carrées avec le tag way les caractéristiques suivantes.
    
    if CREATE == TRUE:
        #Formation
        """ Va Détruire le carré le plus proche de la souris"""
        # Va donner au carre le plus proche des coordonées de la souris le TAG "way"
        Canevas.addtag_closest ("way", X, Y)
        # Va donner au carrées avec le tag way les caractéristiques suivantes.


      
 
    """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
    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-20 and y<= Hauteur-20:
        # 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 - 20):
            x = x + 20
            y = y
        # Fait les retours à la ligne si nécessaires
        else:
            x = 20
            y = y + 20        
    print("Création de",item,"rectangles")
    x = 20
    y = 20
    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 = 600
Hauteur = 400
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)

BoutonGo = Button(cadre, text ='Finish', command = Finish)
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


Télécharger Test Room.py


Télécharger Test Room.py