Example #1
0
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