diff --git a/projet/Block.py b/projet/Block.py index 287684dfe3122a4c20a94f07f26bf6fc5da02d80..e96f55c7da298a8ef121aed651ec7ef54f0c2bbc 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})" + + + + + + + + + + + +