from tkinter import * #module : permet d'importer certains symboles comme des variables, des fonctions ou des classes. #tkinter : module : permet la création des interfaces graphiques (ex : fenêtre, bouton, zone graphique,...) from random import randint,random #permet d'utiliser des fonctions générant des nombres aléatoires #random : renvoie un nombre aléatoire entre 0 et 1. #randint : prend la marge inférieur et supérieur de l'intervalle. (ici 0 et 1) from math import floor #math : module : toutes les fonctions utiles pour les opérations mathématiques (cosinus, sinus, etc.) #floor : affiche les parties entières des nombres, renvoie au plus grand entier """FenetreChoix = Tk() #Fenêtre pour choisir l'option souris ou clavier FenetreChoix.title("Faîtes votre choix ! ") #Titre de la fenêtre Canevas = Canvas(FenetreChoix, width = 48, height = 16, bg = 'White') BoutonClavier = Button(FenetreChoix, text ='Clavier', command = FenetreChoix) BoutonClavier.pack(side=LEFT, padx=5, pady=5) BoutonSouris = Button(FenetreChoix, text ='Souris', command = FenetreChoix) BoutonSouris.pack(side=RIGHT, padx=5, pady=5) """ def nouvelle_carte(): #def : est une instruction composée, sa ligne se termine par un double point afin d'introduire un bloc d'instructions. #nouvelle_carte : fonction qui a pour but d'afficher une carte aléatoirement, nom de la fonction # () : liste des paramètre : la fonction ne nécessite pas d'arguments global casesNoires #global : Cette instruction permet d'indiquer quelles sont les variables à traiter globalement. #ici, il s'agit des cases noires tableau = [[floor(random()+0.25) for j in range(12)] for i in range(20)] #la boucle j dans la boucle i permet de créer un tableau avec 12 cases en horizontale sur 20 cases en verticale. # tableau est définis avec : des valeurs aléatoires entières qui sont soit 1 (noire), soit 0(blanc). # Avec aussi une ranger i de 20 cases puis d'une ranger j de 12 cases à l'intérieur qui forme ensuite un tableau de (20;12) #stocke dans "tableau" les cases affichées #for : permet de répéter certains instructions pour chaque élément d'une liste. #range : pour ... allant de 0 à ...(n'iclus pas le nombre indiqué) tableau[1][1]=0 #force la case (1,1) à être blanche pour le début for i in range(20): #i : cases : {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15}, {16}, {17}, {18}, {19} tableau[i][0]=1 tableau[i][11]=1 ##les bords sont noires for j in range(12): #j : cases : {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11} tableau[0][j]=1 tableau[19][j]=1 #les bords sont noires tableau[2][1]=0 tableau[2][2]=0 tableau[18][11]=0 tableau[3][3]=0 tableau[1][0]=0 tableau[18][10]=0 casesNoires = [] # #can.delete("all") for i in range(20): for j in range(12): if tableau[i][j]==1: Canevas.create_rectangle(i*case,j*case,(i+1)*case,(j+1)*case,fill="black") casesNoires.append((i,j)) # else: Canevas.create_rectangle(i*case,j*case,(i+1)*case,(j+1)*case, fill="white", outline="white") # print(casesNoires) #print : fonction qui permet d'afficher n'importe quel nombre de valeurs fournies en arguments, celle indiquée dans les paranthèses #affiche les cases noires def Creer_Pion(): #Creer_Pion : fonction qui a pour but de créer un pion global PosX,PosY,Pion,flag #coordonnées du pion #flag : if flag==True: Canevas.delete(Pion) #flag : sert à supprimer le pion de l'ancienne partie flag=True # PosX=75 PosY=25 #position initial du pion Pion = Canevas.create_oval(PosX -LargeurPion, PosY -LargeurPion, PosX +LargeurPion, PosY +LargeurPion, outline='black', fill='darkgreen') #création du pion et ses paramètres #création du pion et ses paramètres def Clavier(event): #event : nom de l'évènement #Clavier : fonction qui a pour but d'actualiser la position du pion en fonction de la touche qui a été pressée global PosX,PosY #stockage des coordonnées du pion avec global if flag==False: PosX=75 PosY=75 # touche = event.keysym #stock dans "touche" le nom de la touche pressée if flag==1: # if touche == "Up" and 25 ", xmin, ymin, xmax, ymax) # if xmin<=X<=xmax and ymin<=Y<=ymax: DETECTION_CLIC_SUR_OBJET = False # else: DETECTION_CLIC_SUR_OBJET = True # print("DETECTION CLIC SUR OBJET -> ", DETECTION_CLIC_SUR_OBJET) # if DETECTION_CLIC_SUR_OBJET == True: Canevas.coords(Pion,X-LargeurPion,Y-LargeurPion,X+LargeurPion,Y+LargeurPion) # ############################### PROGRAMME PRINCIPAL ############################################### case=50 #nombres de cases flag=False # casesNoires=[] Mafenetre = Tk() #Création de la fenêtre principale Mafenetre.title('Le Labyrinthe') #Titre de la fenêtre principale Canevas = Canvas(Mafenetre, width= 1000, height= 600, bg='white') #couleur, longueur, et largeur de la fenêtre BoutonMap=Button(Mafenetre,text="Nouvelle Carte",command=nouvelle_carte) # BoutonMap.pack() # LargeurPion = 20 #largeur du Pion en BoutonPion = Button(Mafenetre,text="Commencer",command=Creer_Pion) # BoutonPion.pack() # Canevas.bind('', Clavier) Canevas.bind('', Clic) Canevas.focus_set() Canevas.pack(padx =15, pady =15) #marges extérieures du canevas #Création d'un widget Canvas ( zone graphique ) BoutonQuitter = Button(Mafenetre, text ='Quitter', command = Mafenetre.destroy) #Création d'un widget Button ( Bouton Quitter ) BoutonQuitter.pack(padx = 5, pady = 5) Mafenetre.mainloop() #instruction permet de faire tourner le script et de réceptionner les instructions qui sont données dans le programme. """FenetreChoix.mainloop()"""