Coup.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. class Coup : # Baptiste 09/2016
  2. def __init__( self, ctype, case = None, barriere = None ) : # Jovian : 11 octobre 2016
  3. """
  4. Permet de définir un coup réalisable ou réalisé par un joueur.
  5. Attribut type : "B" ou "M" pour barrière ou mouvement.
  6. Attribut case : case d'arrivée ( si type = "M" ) vaut None sinon. Format (x, y).
  7. Attribut barriere : objet de type Barriere, contenant la barrière placée ou None.
  8. """
  9. self.type = ctype
  10. self.case = case
  11. self.barriere = barriere
  12. def __eq__(c1, c2) : # Quentin 17/10/2016
  13. """ Permet de savoir si deux coups sont identiques """
  14. return c1.type == c2.type and c1.barriere == c2.barriere and c1.case == c2.case
  15. def copie(self) :
  16. if self.type == "M" :
  17. return Coup("M", case = self.case)
  18. else :
  19. return Coup("B", barriere = self.barriere)
  20. def get_code( self ) : # Jovian : 11 octobre 2016
  21. """
  22. Permet de récupérer un coup sous forme de chaîne de caractères.
  23. Retour : Chaîne de caractères, syntaxe "B_x_y_orientation" ou "M_x_y".
  24. Exemples : Barrière au noeud x = 3 et y = 5 horizontale : "B_3_5_h"
  25. Mouvement vers la case (7, 8) : "M_7_8"
  26. """
  27. # Variable de retour
  28. rep = ""
  29. # Codage d'un mouvement
  30. if self.type == "M" :
  31. rep += "M_"
  32. (x , y) = self.case
  33. rep += str(int(x))
  34. rep += "_"
  35. rep += str(int(y))
  36. return rep
  37. # Codage d'un placement de barrière
  38. if self.type == "B" :
  39. rep += "B_"
  40. rep += str(int(self.barriere.x))
  41. rep += "_"
  42. rep += str(int(self.barriere.y))
  43. rep += "_"
  44. rep += self.barriere.orientation
  45. return rep
  46. # Gestion d'un type inexistants
  47. print( "Plateau -> Coup -> get_code" )
  48. print( "Erreur : type " + self.type + " inexistant." )