diff --git a/plateau.py b/plateau.py index 91fa6fb07322170f6b81b548d63cec1d37ff8677..eb2d2f6ee5521431e31fb976341cba0c64516f89 100644 --- a/plateau.py +++ b/plateau.py @@ -94,132 +94,54 @@ class Plateau(): else: print(f"position invalide pour la vooiture {voiture.couleur} ") - def remplir_grille(self): # me permet de remplire la grille sous un configuration 1 du jeu - """ me donne une grille pre remplis selon comment je le desire - - Précondition : - Exemple(s) : - $$$ - """ - for voiture in self.vehicules: # on parcour toutes les voitures de la liste vhicules - ligne, colone = voiture.position - for i in range(voiture.taille) : - if voiture.orientation == "H": - self.GRILLE[ligne][colone+i] = voiture.couleur[0] - else: - self.GRILLE[ligne+i][colone] = voiture.couleur[0] - print(self.GRILLE) - def deplacement(self, couleur: str): - """ à_remplacer_par_ce_que_fait_la_fonction + + def deplacement(self, couleur:int): + """ me permet de deplacer des voitures Précondition : Exemple(s) : $$$ """ - - for voiture in self.vehicules: - if voiture.couleur.lower() == couleur.lower(): - ligne, colonne = voiture.position - print(f"🔴 Voiture {voiture.couleur} trouvée à ({ligne}, {colonne})") - - # ✅ Effacer la voiture de l'ancienne position + for voiture in self.vehicules: # on parcour la liste des vehicules + if voiture.couleur.lower() == couleur.lower():# on cherche la couleur sans se soucier de la casse de l'ecriture de la couleur + ligne, colone = voiture.position + n_colone = colone + n_ligne = ligne + # Effacer l'ancienne position avant de déplacer la voiture if voiture.orientation == "H": for i in range(voiture.taille): - self.GRILLE[ligne][colonne + i] = " " + self.GRILLE[ligne][colone + i] = " " else: for i in range(voiture.taille): - self.GRILLE[ligne + i][colonne] = " " - print("🧹 Grille après suppression :") - self.afficher_grille() - - # ✅ Vérifier où elle peut aller - n_ligne, n_colonne = ligne, colonne # Copie de la position actuelle - print(f"🔍 Déplacement en cours pour {voiture.couleur}...") - + self.GRILLE[ligne + i][colone] = " " + if voiture.orientation == "H": - # Tester si elle peut avancer vers la droite - while n_colonne + voiture.taille < 6 and self.GRILLE[ligne][n_colonne + voiture.taille] == " ": - n_colonne += 1 - print(f"➡️ Avance à droite : ({ligne}, {n_colonne})") - - # Tester si elle peut reculer à gauche - if n_colonne == colonne: # Si elle n'a pas avancé - while n_colonne > 0 and self.GRILLE[ligne][n_colonne - 1] == " ": - n_colonne -= 1 - print(f"⬅️ Recule à gauche : ({ligne}, {n_colonne})") - - voiture.position = (ligne, n_colonne) - + while n_colone + voiture.taille < 6 and self.GRILLE[ligne][n_colone + voiture.taille] == " ": # tanque la voiture peut rester dans les limites de la grille en ne depassant pas la colonne 5 et que + # que la cas suivante est vide on continue la boucle + n_colone+= 1 + if n_colone == colone: # si le deplacement n'as pas eu lieu on essaie vers la gauche + while n_colone > 0 and self.GRILLE[ligne][n_colone - 1] == " " : # tant que on ne depasse pas la limite de la grille et que la case a gauche est vide on continiue la boucle + n_colone -= 1 + voiture.position = (ligne, n_colone) # on reinitialise la position elif voiture.orientation == "V": - # Tester si elle peut descendre - while n_ligne + voiture.taille < 6 and self.GRILLE[n_ligne + voiture.taille][colonne] == " ": - n_ligne += 1 - print(f"⬇️ Descend : ({n_ligne}, {colonne})") + while n_ligne + voiture.taille < 6 and self.GRILLE[n_ligne + voiture.taille][colone] == " ": # tanque la voiture peut rester dans les limites de la grille en ne depassant pas la loigne 5 et que + # que la cas suivante est vide on continue la boucle - # Tester si elle peut monter - if n_ligne == ligne: # Si elle n'a pas descendu - while n_ligne > 0 and self.GRILLE[n_ligne - 1][colonne] == " ": - n_ligne -= 1 - print(f"⬆️ Monte : ({n_ligne}, {colonne})") - - voiture.position = (n_ligne, colonne) + n_ligne += 1 - print(f"🚗 Nouvelle position de {voiture.couleur} : ({voiture.position[0]}, {voiture.position[1]})") + # Si bloqué en bas, essayer en haut + if n_ligne == ligne: # si le placement n'a pas eu lieu on essaie vers le bas + while n_ligne > 0 and self.GRILLE[n_ligne - 1][colone] == " ": # tant que on ne depasse pas la limite de la grille et que la case a gauche est vide on continiue la boucle + n_ligne -= 1 # on reinitialise la ligne - # ✅ Mise à jour de la grille + voiture.position = (n_ligne, colone) + self.remplir_grille() - print("🔄 Grille après mise à jour :") - self.afficher_grille() - - -# def deplacement(self, couleur:int): -# """ me permet de deplacer des voitures -# -# Précondition : -# Exemple(s) : -# $$$ -# """ -# -# for voiture in self.vehicules: # on parcour la liste des vehicules -# if voiture.couleur.lower() == couleur.lower():# on cherche la couleur sans se soucier de la casse de l'ecriture de la couleur -# ligne, colone = voiture.position -# n_colone = colone -# n_ligne = ligne -# # Effacer l'ancienne position avant de déplacer la voiture -# if voiture.orientation == "H": -# for i in range(voiture.taille): -# self.GRILLE[ligne][colone + i] = " " -# else: -# for i in range(voiture.taille): -# self.GRILLE[ligne + i][colone] = " " -# -# if voiture.orientation == "H": -# while n_colone + voiture.taille < 6 and self.GRILLE[ligne][n_colone + voiture.taille] == " ": # tanque la voiture peut rester dans les limites de la grille en ne depassant pas la colonne 5 et que -# # que la cas suivante est vide on continue la boucle -# n_colone+= 1 -# if n_colone == colone: # si le deplacement n'as pas eu lieu on essaie vers la gauche -# while n_colone > 0 and self.GRILLE[ligne][n_colone - 1] == " " : # tant que on ne depasse pas la limite de la grille et que la case a gauche est vide on continiue la boucle -# n_colone -= 1 -# voiture.position = (ligne, n_colone) # on reinitialise la position -# elif voiture.orientation == "V": -# while n_ligne + voiture.taille < 6 and self.GRILLE[n_ligne + voiture.taille][colone] == " ": # tanque la voiture peut rester dans les limites de la grille en ne depassant pas la loigne 5 et que -# # que la cas suivante est vide on continue la boucle -# -# n_ligne += 1 -# -# # Si bloqué en bas, essayer en haut -# if n_ligne == ligne: # si le placement n'a pas eu lieu on essaie vers le bas -# while n_ligne > 0 and self.GRILLE[n_ligne - 1][colone] == " ": # tant que on ne depasse pas la limite de la grille et que la case a gauche est vide on continiue la boucle -# n_ligne -= 1 # on reinitialise la ligne -# -# voiture.position = (n_ligne, colone) -# -# self.remplir_grille() -# -# -# + + +