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.
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.
- Edité par thelinekioubeur 14 mai 2021 à 14:05:37
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.