Skip to content
Snippets Groups Projects
Commit ab2512bd authored by Komi Dogbe's avatar Komi Dogbe
Browse files

mise ajour de mon plateau et ajout de voiture en verifiant le non chevauchement

parent 83955b3c
Branches
No related tags found
No related merge requests found
from plateau import Plateau # Importation de la classe Plateau
plateau = Plateau(6) # cree un plateau de taille 6
plateau.remplir_grille()
plateau.afficher_grille()
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment