Description
Ce programme est une application graphique permettant de créer, modifier, sauvegarder, et explorer des cartes en utilisant l’algorithme de recherche de chemin A* (A-star). Les cartes sont représentées sous forme de grilles 2D où chaque case peut être soit un espace vide, un obstacle (*
), ou un point de départ (X
). L’application utilise la bibliothèque tkinter
pour l’interface graphique.
Fonctionnalités Principales
- Chargement de Carte : Permet de charger une carte depuis un fichier texte.
- Sauvegarde de Carte : Permet de sauvegarder la carte actuelle dans un fichier texte.
- Création de Carte : Permet de créer une nouvelle carte vierge avec des dimensions spécifiées par l’utilisateur.
- Ajout/Modification d’Obstacles et Points de Départ : Permet d’ajouter ou de supprimer des obstacles (
*
) et de placer des points de départ (X
) sur la carte via des clics de souris. - Exploration Automatique : Implémente un algorithme de parcours pour explorer la carte à partir du point de départ (
X
). - Réaffichage de Carte : Permet de réafficher la carte à partir du fichier texte courant.
Utilisation de l’Interface
- Charger Carte : Clique sur ce bouton pour sélectionner un fichier texte et charger une carte dans l’application.
- Sauvegarder Carte : Clique sur ce bouton pour enregistrer la carte actuelle dans un fichier texte.
- Créer Carte : Clique sur ce bouton pour créer une nouvelle carte avec les dimensions spécifiées dans les champs de saisie de largeur et de hauteur.
- Activer/Désactiver Mode X : Clique sur ce bouton pour activer ou désactiver le mode de placement du point de départ (
X
). Lorsque ce mode est activé, cliquer sur la carte placera unX
. - Réafficher Carte : Clique sur ce bouton pour relire et redessiner la carte à partir du fichier texte chargé actuellement.
- Explorer Carte : Clique sur ce bouton pour démarrer l’exploration automatique de la carte depuis le point de départ (
X
).
Fonctions du Programme
1. Fonctions de Gestion de la Carte
lire_carte(fichier)
: Lit le contenu d’un fichier texte et le charge dans une liste 2D représentant la carte.largeur_carte(carte)
: Calcule la largeur maximale de la carte.dessiner_rectangle(col, lig, color)
: Dessine un rectangle de couleur spécifiée sur le canevas aux coordonnées données.dessiner_carte(carte)
: Redessine toute la carte sur le canevas en fonction des données de la carte.
2. Fonctions d’Interaction
charger_carte()
: Ouvre une boîte de dialogue pour sélectionner un fichier et charger la carte depuis ce fichier.sauvegarder_carte()
: Ouvre une boîte de dialogue pour enregistrer la carte actuelle dans un fichier texte.creer_carte()
: Crée une nouvelle carte vierge avec des dimensions spécifiées par l’utilisateur.ajouter_obstacle(event)
: Ajoute ou supprime un obstacle (*
) ou place un point de départ (X
) sur la carte en fonction du mode de placement activé, sur la position du clic de souris.toggle_placer_X_mode()
: Active ou désactive le mode de placement deX
sur la carte.reafficher_carte()
: Relit et redessine la carte à partir du fichier texte chargé actuellement.
3. Fonctions de Parcours et Algorithme
search_car(carte, car)
: Recherche la position d’un caractère donné (par exemple,X
) sur la carte.rechercher_case_adjacente_libre(carte, visites, x, y)
: Recherche une case adjacente libre autour d’une position donnée.rechercher_case_proche_libre(carte, visites, x, y)
: Recherche une case libre proche en parcourant une liste de positions visitées.heuristic(a, b)
: Calcule l’heuristique pour l’algorithme A* (distance de Manhattan).astar_search(map, start, goal)
: Implémente l’algorithme A* pour trouver le chemin le plus court entre deux points sur la carte.explorer_carte()
: Démarre le parcours automatique de la carte en utilisant une combinaison de recherche de case libre et l’algorithme A*.
Variables Globales
taille_case
: Détermine la taille en pixels de chaque case de la grille.duree_deplacement
: Détermine la durée d’attente entre les mouvements lors de l’exploration automatique.canvas
: Canevastkinter
utilisé pour dessiner la carte.carte
: Liste 2D représentant la carte actuelle.fichier_courant
: Chemin du fichier texte actuellement chargé.placer_X_mode
: Booléen indiquant si le mode de placement duX
est activé.
Exigences
- Python 3.x
- Bibliothèque
tkinter
(inclus avec Python standard) - Bibliothèque
heapq
(inclus avec Python standard) - Fichiers de carte au format texte (chaque ligne représente une ligne de la grille, avec
*
pour obstacles,X
pour points de départ, et espace pour les cases libres).
Instructions d’Installation
- Assurez-vous que Python 3.x est installé sur votre système.
- Enregistrez le script dans un fichier Python (
.py
). - Exécutez le script depuis un terminal ou un environnement Python compatible.
- Exécution
Shell
- Exemple de fichier carte
Plain Text
Les caractères *
représentent des obstacles, X
représente le point de départ, et les espaces représentent les cases libres.
Programme
Python