Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide par rapport à un mini Projet à faire

    12 mai 2021 à 15:58:35

    Bonjour, j'ai un projet à faire en spé NSI au lycée par rapport à la génération automatique et résolution de labyrinthes avec les graphes et tkinter pour afficher.

    On vient juste de commencer les graphes du coup je suis pas trop à l'aise avec mais du coup:

    voila le début de mon énoncé plus ce que j'ai fait:

    Enoncé (ce n'est qu'un début de partie):

    Début de code (class graphe):
    class Graphe:
        """
        Classe implémentant la structure de graphe à partir du dictionnaire obtenu
        à partir de la liste des sommets associée à la liste des listes
        d'adjacence
    
        Exemple :
    
        graphe_exemple = Graphe([(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)],
                                [[(1, 0)],
                                 [(0, 0), (0, 2)],
                                 [(0, 1), (1, 2)],
                                 [(0, 0)],
                                 [(1, 2), (0, 1)],
                                 [(1, 1)]])
        """
    
        def __init__(self, sommets, aretes):
            self.graphe = {}
            for i in range(len(sommets)):
                self.graphe[sommets[i]] = aretes[i]
            print(self.graphe)
    
        def liste_voisins(self, sommet):
            if sommet in self.graphe:
                return self.graphe[sommet]
    
        def liste_sommets(self):
            return [i for i in self.graphe]
    
        def __repr__(self):
            return self.graphe
    
    
    dans un autre fichier tout ce qui est tkinter:
    # Chargement du module tkinter
    from tkinter import *
    from tkinter import messagebox
    
    # Chargement de la fonction randint du module random
    from random import randint
    
    #Chargement des structures abstraites:
    from structures_abstraites import *
    
    #Création de la liste en compréhension:
    liste_compréhension = []
    for i in range(0, 4):
        for j in range(0, 7):
            graphe = (i,j)
            liste_compréhension.append(graphe)
    print(liste_compréhension)
    
    
    # Dimensions du labyrinthe (constantes)
    NB_LIGNES = 4
    NB_COLONNES = 7
    TAILLE_CASE = 30  # Taille d'une case en pixels
    
    # Création de la fenêtre principale
    fen_principale = Tk()
    
    # Définition de la taille de la fenêtre
    largeur = (NB_COLONNES + 2)*TAILLE_CASE  # prise en compte des 2 bordures
    hauteur = (NB_LIGNES + 2)*TAILLE_CASE    # idem
    fen_principale.geometry(str(largeur)+'x'+str(hauteur))
    
    # Définition du titre de la fenêtre
    fen_principale.title('Labyrinthe')
    
    # Création du widget canvas permettant de dessiner des formes diverses
    monCanvas = Canvas(fen_principale,
                       width=largeur,
                       height=hauteur,
                       bg='lightgray',
                       border=TAILLE_CASE)
    
    # Mise en place du widget dans la fenêtre
    monCanvas.pack()
    J'ai crée la liste en compréhension comme vous pouvez le voir dans le deuxième morceau de code mais mon probleme c'est surtout pour crée la fonction dessine_labyrinthe(canevas, graphe): que je comprends pas comment faire.
    Merci d'avance pour votre aide.

    -
    Edité par Waxise 12 mai 2021 à 16:02:25

    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2021 à 14:04:46

      L'algo le plus simple pour générer un labyrinthe, c'est l'exploration exhaustive : tu choisis une direction au hasard, tu casse un mur et tu avance, tu marque ton passage pour ne pas revenir au même endroit, puis tu recommence.

      Voir ici : https://fr.wikipedia.org/wiki/Mod%C3%A9lisation_math%C3%A9matique_de_labyrinthe#Exploration_exhaustive

      -
      Edité par thelinekioubeur 14 mai 2021 à 14:05:37

      • Partager sur Facebook
      • Partager sur Twitter

      Aide par rapport à un mini Projet à faire

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown