class Game_board: # constructeur def __init__(self): self.nb_maison_dispo = 32 self.nb_hotel_dispo = 12 self.dice = Dice() # instanciation des cartes self.carte_chance = Carte_chance() self.carte_communaute = Carte_communaute() # self.proprietes = proprietes_data # instanciation des cases propriété self.proprietes = [] for i in proprietes_data: self.proprietes.append(Propriete(i)) # for p in self.proprietes: p.fiche() # instanciation des cases gare self.gares = [] for i in gares_data: self.gares.append(Gare(i)) # for g in self.gares: g.fiche() # instanciation des cases compagnie self.compagnies = [] for i in compagnies_data: self.compagnies.append(Compagnie(i)) # for c in self.compagnies: c.fiche() # instanciation de la prison self.prison = Prison() # tableau des joueurs self.joueurs = [] def init_game(self): print("************************************\n" + "* BIENVENUE A LA TABLE DE MONOPOLY *\n" + "************************************\n") j = Joueur() self.joueurs.append(j) j = Joueur() self.joueurs.append(j) print("Il y a", len(self.joueurs), "joueurs à la table\n") while len(self.joueurs) < 5 and input( "Souhaitez-vous ajouter un nouveau joueur (max = 5) (o/N) ? " ).lower() == "o": j = Joueur() self.joueurs.append(j) print("Il y a", len(self.joueurs), "joueurs à la table\n") print("\nDébut de la partie\n") # for j in self.joueurs: j.fiche() def play(self): for j in self.joueurs: j.fiche() if j.position == 40: #joueur en prison self.prison.libere(j, self.carte_chance, self.carte_communaute) if j.position != 40: self.case_arrivee(j) # le joueur a été libéré else: # si joueur n'est pas en prison j.go(self.dice.lancer(j)) self.case_arrivee(j) while j.nb_double > 0: # tant le joueur a fait un double, il rejoue print(j.nom, "rejoue") j.go(self.dice.lancer(j)) self.case_arrivee(j) # analyse de la case d'arrivée def case_arrivee(self, j): # joueur j if j.position == 0: # case départ = 0 j.cash += 200 print("Vous avez reçu 200 € !") elif j.position in [7, 22, 36]: self.carte_chance.tirer_carte( j ) # carte chance voir si supprimer proprietes en mettant import dans chance if j.replay: j.replay = False self.case_arrivee(j) # en cas de carte de déplacement elif j.position in [2, 17, 33]: self.carte_communaute.tirer_carte( j, self.joueurs) # carte caisse de communauté if j.replay: j.replay = False self.case_arrivee(j) # en cas de carte de déplacement if j.retire_chance: j.retire_chance = False self.carte_chance.tirer_carte( j) # si ne paye pas l'amende et préfere tirer chance elif j.position in proprietes_data: # terrain p = Propriete(j.position) p.fiche() p.visite(j, self.joueurs) elif j.position in compagnies_data: # électricité/eau c = Compagnie(j.position) c.fiche() c.visite(j, self.joueurs) elif j.position in gares_data: # gare g = Gare(j.position) g.fiche() g.visite(j, self.joueurs) elif j.position in [0, 10, 20]: # case départ, simple visite, parc gratuit if j.position == 0: print("Case départ") elif j.position == 10: print("Simple visite") elif j.position == 20: print("Parc gratuit") elif j.position == 30: # allez en prison print("Allez directement en prison") j.position = 40 j.nb_double = 0 # cas du joueur qui arrive ici par un double => ne rejoue pas elif j.position == 4: # impôts print("Taxe sur le revenu: 200 €") j.payer(200) elif j.position == 38: # taxe luxe print("Taxe de luxe: 100 €") j.payer(100) else: # pour debug print("Erreur de case") exit() ############################################################################# ########################### FONCTIONS POUR DEBUG ########################### ############################################################################# def list_all(self): print("****************\nListing complet") for i in range(1, 40): print("\ncase:", i) if i in self.proprietes: p = Propriete(i) p.fiche() elif i in self.compagnies: c = Compagnie(i) c.fiche() elif i in self.gares: g = Gare(i) g.fiche() def list_proprietes(self): print("****************\nListing propriétés") for i in range(1, 40): if i in self.proprietes: print("\ncase:", i) p = Propriete(i) p.fiche() def list_gares(self): print("****************\nListing gares") for i in range(1, 40): if i in self.gares: print("\ncase:", i) g = Gare(i) g.fiche() def list_compagnies(self): print("****************\nListing compagnies") for i in range(1, 40): if i in self.compagnies: print("\ncase:", i) c = Compagnie(i) c.fiche() # listing des cartes chance def list_chance(self): print("****************\nListing cartes chance") # for i in range(len(self.carte_chance.jeu_carte)): print(self.carte_chance.jeu_carte.pop(len(self.carte_chance.jeu_carte)-1)[0]) for c in self.carte_chance.jeu_carte: print(self.carte_chance.jeu_carte[c]) # listing des cartes caisse de communauté def list_communaute(self): print("****************\nListing cartes caisse de communauté") # for i in range(len(self.carte_communaute.jeu_carte)): print(self.carte_communaute.jeu_carte.pop(len(self.carte_communaute.jeu_carte)-1)[0]) for c in self.carte_communaute.jeu_carte: print(self.carte_communaute.jeu_carte[c])