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 deXsur 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: Canevastkinterutilisé 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 duXest 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,Xpour 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
- Exemple de fichier carte
Les caractères * représentent des obstacles, X représente le point de départ, et les espaces représentent les cases libres.
0 commentaire