class Coup : # Baptiste 09/2016 def __init__( self, ctype, case = None, barriere = None ) : # Jovian : 11 octobre 2016 """ Permet de définir un coup réalisable ou réalisé par un joueur. Attribut type : "B" ou "M" pour barrière ou mouvement. Attribut case : case d'arrivée ( si type = "M" ) vaut None sinon. Format (x, y). Attribut barriere : objet de type Barriere, contenant la barrière placée ou None. """ self.type = ctype self.case = case self.barriere = barriere def __eq__(c1, c2) : # Quentin 17/10/2016 """ Permet de savoir si deux coups sont identiques """ return c1.type == c2.type and c1.barriere == c2.barriere and c1.case == c2.case def copie(self) : if self.type == "M" : return Coup("M", case = self.case) else : return Coup("B", barriere = self.barriere) def get_code( self ) : # Jovian : 11 octobre 2016 """ Permet de récupérer un coup sous forme de chaîne de caractères. Retour : Chaîne de caractères, syntaxe "B_x_y_orientation" ou "M_x_y". Exemples : Barrière au noeud x = 3 et y = 5 horizontale : "B_3_5_h" Mouvement vers la case (7, 8) : "M_7_8" """ # Variable de retour rep = "" # Codage d'un mouvement if self.type == "M" : rep += "M_" (x , y) = self.case rep += str(int(x)) rep += "_" rep += str(int(y)) return rep # Codage d'un placement de barrière if self.type == "B" : rep += "B_" rep += str(int(self.barriere.x)) rep += "_" rep += str(int(self.barriere.y)) rep += "_" rep += self.barriere.orientation return rep # Gestion d'un type inexistants print( "Plateau -> Coup -> get_code" ) print( "Erreur : type " + self.type + " inexistant." )