Explorateur de cartes

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

  1. Chargement de Carte : Permet de charger une carte depuis un fichier texte.
  2. Sauvegarde de Carte : Permet de sauvegarder la carte actuelle dans un fichier texte.
  3. Création de Carte : Permet de créer une nouvelle carte vierge avec des dimensions spécifiées par l’utilisateur.
  4. 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.
  5. Exploration Automatique : Implémente un algorithme de parcours pour explorer la carte à partir du point de départ (X).
  6. 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 un X.
  • 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 de X 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 : Canevas tkinter 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 du X 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

  1. Assurez-vous que Python 3.x est installé sur votre système.
  2. Enregistrez le script dans un fichier Python (.py).
  3. 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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *