class Game: def __init__(self, listeDeJoueur): self.plateau = Plateau() self.listDeJoueur = listeDeJoueur for i in range(len(self.listDeJoueur)): if self.listDeJoueur[i].getPieces() == None or len( self.listDeJoueur[i].getPieces()) == 0: self.listDeJoueur[i].setPieces( FactoryPiece.createAllPiece(self.listDeJoueur[i].couleur)) self.joueursEnVie = [] for p in self.listDeJoueur: self.joueursEnVie.append(p) self.joueurEnCours = None self.pieceEnCours = None self.runGame = True self.nbSurrender = 0 self.classement = [] def start(self): self.joueurEnCours = self.joueursEnVie[0] self.pieceEnCours = self.joueurEnCours.getPremierePiece() self.plateau.initPlateau() self.plateau.affichePlateau() print("Que le jeux commence !!") self.deroulementDuJeu() def deroulementDuJeu(self): while (self.runGame): #Tant que la partie n'est pas fini self.plateau.putPieceOnPreview(self.pieceEnCours) for i in range(10): print() self.plateau.affichePlateau() self.pieceEnCours.afficher() self.afficheMenu() self.action() def afficheMenu(self): print("Choisissez une action : ") print("\t- (Z) pour monter la pièce") print("\t- (S) pour déscendre la pièce") print("\t- (Q) pour décaler la pièce à gauche") print("\t- (D) pour décaler la pièce à droite") print("") print("\t- (R) pour tourner la pièce") print("\t- (T) pour retourner la pièce") print("\t- (m) pièce suivante") print("\t- (l) pièce précédente") print("\t- (V) pour valider (placer la pièce)") print("") print("\t- (B) pour sauvegarder et quitter la partie") def joueurSuivant(self): if (len(self.joueursEnVie) == 1): self.joueurEnCours = self.joueursEnVie[0] if self.joueursEnVie.index( self.joueurEnCours) == len(self.joueursEnVie) - 1: self.joueurEnCours = self.joueursEnVie[0] else: self.joueurEnCours = self.joueursEnVie[ self.joueursEnVie.index(self.joueurEnCours) + 1] self.pieceEnCours = self.joueurEnCours.getPremierePiece() def action(self): time.sleep(.1) while True: try: if keyboard.is_pressed('z'): self.pieceEnCours.monter() break elif keyboard.is_pressed('s'): self.pieceEnCours.descendre() break elif keyboard.is_pressed('q'): self.pieceEnCours.gauche() break elif keyboard.is_pressed('d'): self.pieceEnCours.droite() break elif keyboard.is_pressed('r'): self.pieceEnCours.rotation() break elif keyboard.is_pressed('t'): self.pieceEnCours.retourner() break elif keyboard.is_pressed('m'): self.pieceEnCours.positionX = 10 self.pieceEnCours.positionY = 10 self.pieceEnCours = self.joueurEnCours.getPieceSuivante() break elif keyboard.is_pressed('l'): self.pieceEnCours.positionX = 10 self.pieceEnCours.positionY = 10 self.pieceEnCours = self.joueurEnCours.getPiecePrecedente() break elif keyboard.is_pressed('v'): if (self.plateau.validerPiece(self.pieceEnCours, self.joueurEnCours, self.listDeJoueur)): self.joueurEnCours.removePiece(self.pieceEnCours) self.joueurEnCours.surrender = self.plateau.verifierFinPartie( self.joueurEnCours, self.listDeJoueur) for player in self.joueursEnVie: if (player.surrender == True): self.joueursEnVie.remove(player) self.classement.append(player) self.nbSurrender = self.nbSurrender + 1 nbJoueur = len(self.joueursEnVie) + len( self.classement) if ((self.plateau.partieFini(self.joueurEnCours)) or (self.nbSurrender == nbJoueur)): self.runGame = False for player in self.classement: player.calculPoint() self.classement = sorted(self.classement, key=attrgetter('nbPoint'), reverse=False) for i in range(len(self.classement)): if (i == 0): print("Le joueur " + str(self.classement[i].couleur) + " à gagner avec " + str(self.classement[i].nbPoint) + " points") else: print("Le joueur " + str(self.classement[i].couleur) + " à perdu avec " + str(self.classement[i].nbPoint) + " points") self.joueurSuivant() break elif keyboard.is_pressed('b'): fileName = input("Saisissez le nom de votre partie : ") print("Enregistrement en cours....") save = Enregistrement(self.plateau, self.listDeJoueur) save.enregistrer(fileName) print("Enregistrement terminer....") self.runGame = False break elif keyboard.is_pressed('h'): self.plateau.bot(self.joueurEnCours, self.listDeJoueur) self.joueurEnCours.surrender = self.plateau.verifierFinPartie( self.joueurEnCours, self.listDeJoueur) for player in self.joueursEnVie: if (player.surrender == True): self.joueurSuivant() self.joueursEnVie.remove(player) self.classement.append(player) self.nbSurrender = self.nbSurrender + 1 nbJoueur = len(self.joueursEnVie) + len(self.classement) if ((self.plateau.partieFini(self.joueurEnCours)) or (self.nbSurrender == nbJoueur)): self.runGame = False for player in self.classement: player.calculPoint() self.classement = sorted(self.classement, key=attrgetter('nbPoint'), reverse=False) for i in range(len(self.classement)): if (i == 0): print("Le joueur " + str(self.classement[i].couleur) + " à gagner avec " + str(self.classement[i].nbPoint) + " points") else: print("Le joueur " + str(self.classement[i].couleur) + " à perdu avec " + str(self.classement[i].nbPoint) + " points") self.joueurSuivant() break except: break def setPlateau(self, plateau): self.plateau = plateau def setListeJoueur(self, listeDeJoueur): self.listDeJoueur = listeDeJoueur