diff --git a/l1teste.py b/l1teste.py new file mode 100644 index 0000000000000000000000000000000000000000..7f04b2820a6cedc31d9f5353a6de4c14407dc99d --- /dev/null +++ b/l1teste.py @@ -0,0 +1,4 @@ +from plateau import Plateau # Importation de la classe Plateau +plateau = Plateau(6) # cree un plateau de taille 6 +plateau.remplir_grille() +plateau.afficher_grille() diff --git a/plateau.py b/plateau.py index 0c80b278c756a3550faac0b4d7c5c3a8beaca88b..61c55886a612e0236567910ffe1e6ab423035ac6 100644 --- a/plateau.py +++ b/plateau.py @@ -1,13 +1,10 @@ +from voiture import Voiture + class Plateau(): """ à_remplacer_par_ce_que_fait_la_classe Exemple(s) : - $$$ Plateau.cree_grille_vide(6) - [[' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' '],\ - [' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' '],\ - [' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ']] - $$$ Plateau.afficher_grille(cree_grille_vide(6)) - + $$$ """ @@ -18,42 +15,126 @@ class Plateau(): $$$ """ self.taille = taille - GRILLE= [[' ']*taille for _ in range(taille)] + self.GRILLE= [[' ']*taille for _ in range(taille)] - def cree_grille_vide(taille:int)->list[list]: - """ me permet de cree une grille et de l'afficher + def cree_grille_vide(taille: int) -> list[list]: + """ Crée une grille vide de la taille donnée Précondition : Exemple(s) : $$$ """ - GRILLE= [[' ']*taille for _ in range(taille)] - return GRILLE - - def afficher_grille(GRILLE:list[list])->list[list]: + return [[' ']*taille for _ in range(taille)] + + + def afficher_grille(self)->list[list]: """ me permet d'afficher une grille de facon lisible Précondition : Exemple(s) : $$$ """ - taille = len(GRILLE) - taille = len(GRILLE[0]) - separateur = "+___" * taille +"+" - for taille in GRILLE: - print(separateur) - ligne_formate = "| " - for elem in taille: - if elem == '': - ligne_formate += ' | ' - else: - ligne_formate+= str(elem) + ' | ' + separateur = "+___" * self.taille + "+" + for ligne in self.GRILLE: + print(separateur) + ligne_formate = "| " + " | ".join(ligne) + " |" print(ligne_formate) print(separateur) -def - - - - - + + + def verifie_position_valide(self, ligne: int, colone: int, taille: int, orientation: str) -> bool: + """ verifie si la position d'ajout de la grille est valide + Précondition : + Exemple(s) : + $$$ + """ + if orientation == "H": # si l'orientation est horizontale ?? + if taille + colone > self.taille: # verifie si la taille ne depasse pas la taille de la grille + return False # on arrete de vouloir ajouter la voiture + for i in range(taille): # pour chaque indice de taille + if self.GRILLE[ligne][colone + i] != ' ':# si la case n'est pas vide + return False # on arrete + elif orientation == "V": # verticalement + if taille + ligne > self.taille:# verifie si la taille ne depasse pas la taille de la grille + return False + for i in range(taille): + if self.GRILLE[ligne+i][colone] != ' ': # si la case n'est pas vide + return False + return True #renvoie True si la position est valide + + def ajouter_voiture(self, voiture:Voiture): + """ me permet d'ajouter des voiture a la grille que j'ai cree + + Précondition : + Exemple(s) : + $$$ + """ + ligne, colone = voiture.position + if not self.verifie_position_valide(ligne, colone, voiture.taille, voiture.orientation): # verifie si l'emplacement est valide + print(f"place invalide la voiture de couleur {voiture.couleur} ne peut pas etre ajouter ") + if voiture.orientation == "H": + + for i in range(voiture.taille): + if colone+i < self.taille: # verifiller si la taille de la voiture ne depasse pas la taille de la grille + self.GRILLE[ligne][colone+i] = voiture.couleur[0] # si c'est horizontal on prend la premiere lettre du nom de la voiture + else: + print(f"Erreur : La voiture dépasse à droite à partir de la position {voiture.position}") + elif voiture.orientation == "V" : + for i in range(voiture.taille): + if ligne+i < self.taille: # verifiller si la taille de la voiture ne depasse pas la taille de la grille + self.GRILLE[ligne+i][colone] = voiture.couleur[0] # si c'est verticale on prend la premiere lettre du nom de la voiture + else: + print(f"Erreur : La voiture dépasse vers le bas à partir de la position {voiture.position}") + + def remplir_grille(self): + """ me donne une grille pre remplis selon comment je le desire + + + Précondition : + Exemple(s) : + $$$ + """ + # cree des voiture + voiture_rouge = Voiture("Rouge", 2, (2, 0), "H") + voiture_bleue = Voiture("Bleue", 3, (2, 2), "V") + voiture_verte = Voiture("Verte", 2, (5, 1), "H") + voiture_noire = Voiture("Noire", 3, (4, 3), "H") + voiture_cendre = Voiture("Cendre", 2, (3, 3), "V") + voiture_orange = Voiture("Orange", 2, (5, 3), "V") + + + # Ajouter les voitures au plateau + self.ajouter_voiture(voiture_rouge) + self.ajouter_voiture(voiture_bleue) + self.ajouter_voiture(voiture_verte) + self.ajouter_voiture(voiture_noire) + self.ajouter_voiture(voiture_cendre) + self.ajouter_voiture(voiture_orange) + + def deplaement_des_voitures(self, voiture:Voiture, direction:str, nb_case_pour_bouger:int)->bool: + """ me permet de gerer les deplacement des voitures + + Précondition : + Exemple(s) : + $$$ + """ + if direction == "H": + if colone+nb_case_pour_bouger> self.taille: + return False + for i in range(nb_case_pour_bouger): + if self.GRILLE[colone+i][ligne] != " ": + return False + elif voiture.direction == "V": + if ligne + nb_case_pour_bouger > self.taille: + return False + for i in range(nb_case_pour_bouger): + if self.GRILLE[colone][ligne+1] != " ": + return False + return True + + + + + +