From f7c4d11c01c997d2f5bc4d1ee0a8d3da7190f819 Mon Sep 17 00:00:00 2001 From: Lynda Dahmane <lynda.dahmane.etu@univ-lille.fr> Date: Tue, 2 Apr 2024 10:39:52 +0200 Subject: [PATCH] Replace Block.py --- projet/Block.py | 80 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 64 insertions(+), 16 deletions(-) diff --git a/projet/Block.py b/projet/Block.py index 287684d..e96f55c 100644 --- a/projet/Block.py +++ b/projet/Block.py @@ -1,29 +1,77 @@ class Block: - def _init_(self,x:int,y,width:int,height:int,color=None): - self.x=x - self.y=y - self.width=width - self.height=height - self.sub_blocs=[] + + + + def __init__(self, zone, couleur=None, sous_blocs=None): + """Initialisation un objet Bloc avec une zone, une couleur et des sous_blocs""" + self.zone=zone + self.couleur=couleur + self.sous_blocs=sous_blocs - - def est_uniform(self)->bool: - if self.color is None: + if self.sous_blocs: + if len(self.sous_blocs)!=4: + raise ValueError() + if couleur is not None: + raise ValueError() + self.couleur=self.moyenne_couleurs() + - return False - for sub_bloc in self.sub_blocs: - if sub_bloc.color!=self.color: - return False - return True + def moyenne_couleurs(self): + """Renvoie la moyenne des couleurs des sous_blocs""" + + if not self.sous_blocs: + return self.couleur + else: + r,g,b=0, 0, 0 + for blocs in self.sous_blocs: + r+=bloc.couleur[0] + g+=bloc.couleur[1] + b+=bloc.couleur[2] + return [r/len(self.sous_blocs), g / len(self.sous_blocs),b/len(self.sous_blocs)] + + + + + def est_uniforme(self)->bool: + """Renvoie True si le bloc est uniforme""" + return not self.sous_blocs - def ajouter_sub_bloc(self,bloc:str): - self.sub_blocs.append(bloc) + + def est_dans_limites(self,limites_min, limites_max): + """Renvoie True si la zone du bloc est dans les limites spécifiées """ + x,y=self.zone[:2] + width, height=self.zone[2:] + return (x>=limites_min[0] and x + width<=limites_max[0] and y>=limites_min[1] and x + height<=limites_max[1]) + + + + + + + def __str__(self): + """Renvoie une représentation en chaine de caractére du bloc""" + if self.est_uniforme(): + return f"Bloc(uniforme, couleur={self.couleur})" + else: + return f"Bloc(non_uniforme, couleur={self.couleur})" + + + + + + + + + + + + -- GitLab