print(f"position invalide pour la vooiture {voiture.couleur}")
print(f"position invalide pour la vooiture {voiture.couleur}")
defremplir_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) :
defdeplacement(self,couleur:int):
$$$
""" me permet de deplacer des voitures
"""
forvoitureinself.vehicules:# on parcour toutes les voitures de la liste vhicules
ligne,colone=voiture.position
foriinrange(voiture.taille):
ifvoiture.orientation=="H":
self.GRILLE[ligne][colone+i]=voiture.couleur[0]
else:
self.GRILLE[ligne+i][colone]=voiture.couleur[0]
print(self.GRILLE)
defdeplacement(self,couleur:str):
""" à_remplacer_par_ce_que_fait_la_fonction
Précondition :
Précondition :
Exemple(s) :
Exemple(s) :
$$$
$$$
"""
"""
forvoitureinself.vehicules:# on parcour la liste des vehicules
forvoitureinself.vehicules:
ifvoiture.couleur.lower()==couleur.lower():# on cherche la couleur sans se soucier de la casse de l'ecriture de la couleur
ifvoiture.couleur.lower()==couleur.lower():
ligne,colone=voiture.position
ligne,colonne=voiture.position
n_colone=colone
print(f"🔴 Voiture {voiture.couleur} trouvée à ({ligne}, {colonne})")
n_ligne=ligne
# Effacer l'ancienne position avant de déplacer la voiture
# ✅ Effacer la voiture de l'ancienne position
ifvoiture.orientation=="H":
ifvoiture.orientation=="H":
foriinrange(voiture.taille):
foriinrange(voiture.taille):
self.GRILLE[ligne][colonne+i]=""
self.GRILLE[ligne][colone+i]=""
else:
else:
foriinrange(voiture.taille):
foriinrange(voiture.taille):
self.GRILLE[ligne+i][colonne]=""
self.GRILLE[ligne+i][colone]=""
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}...")
ifvoiture.orientation=="H":
ifvoiture.orientation=="H":
# Tester si elle peut avancer vers la droite
whilen_colone+voiture.taille<6andself.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_colonne+=1
n_colone+=1
print(f"➡️ Avance à droite : ({ligne}, {n_colonne})")
ifn_colone==colone:# si le deplacement n'as pas eu lieu on essaie vers la gauche
whilen_colone>0andself.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
# Tester si elle peut reculer à gauche
n_colone-=1
ifn_colonne==colonne:# Si elle n'a pas avancé
voiture.position=(ligne,n_colone)# on reinitialise la position
print(f"⬅️ Recule à gauche : ({ligne}, {n_colonne})")
voiture.position=(ligne,n_colonne)
elifvoiture.orientation=="V":
elifvoiture.orientation=="V":
# Tester si elle peut descendre
whilen_ligne+voiture.taille<6andself.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
print(f"🚗 Nouvelle position de {voiture.couleur} : ({voiture.position[0]}, {voiture.position[1]})")
# Si bloqué en bas, essayer en haut
ifn_ligne==ligne:# si le placement n'a pas eu lieu on essaie vers le bas
whilen_ligne>0andself.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()
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