Beispiel #1
0
    def manageTurn(self, player, dVal, chkID):
        # if player has all checkers at home, pass turn
        if dVal <> 5 and player.getNumChksAtHome() == 4:
            return

        if self.playerCanMove(dVal, player) == False: 
            return

        chkID = self.breakSixBarrier(player, dVal, chkID)
        
        processTurn = self.nextTurn(player, dVal, chkID)

        result = self.breakFiveBarrier(processTurn, player, chkID, dVal)

        # manual select succedeed
        if result == True:
            return

        while isinstance(processTurn, int) or processTurn == False:
            if isinstance(processTurn, int):
                self.__draw()

            if processTurn == 6 or processTurn == 12:
                #processTurn = self.dice.throwDice()
                processTurn = self.throwDice()
                logging.info("%s gets %s ", player.getName(), str(processTurn))

            if processTurn == -6:
                # checker can not be moved in last turn, retry
                processTurn = 6

            if isinstance(processTurn, int):
                result = processTurn

            # if player has all checkers at home, pass turn
            if dVal <> 5 and player.getNumChksAtHome() == 4:
                return
    
            if self.playerCanMove(processTurn, player) == False:
                logging.info("%s can move with %s ", player.getName(), str(dVal))
                return

            chkID = self.breakSixBarrier(player, processTurn, chkID)

            processTurn = self.nextTurn(player, result, chkID)

            result = self.breakFiveBarrier(processTurn, player, chkID, dVal)

            # manual select succedeed
            if result == True:
                return
Beispiel #2
0
    def loop(self):
        self.__draw() # first time for background
        while self.going:
            self.clock.tick(120)
            for player in self.players:
                #dVal = self.dice.throwDice()
                dVal = self.throwDice()
                logging.info("%s gets %s ", player.getName(), str(dVal))

                self.manageTurn(player, dVal, None)
                self.__draw()
Beispiel #3
0
    def __blockUntilSelect(self, player, dVal, breakBarrier = True):
        chk = None

        if dVal == 5 and breakBarrier == True:
            for chkSprite in self.chkSprites:
                for checker in chkSprite:
                    chkSearch = checker.getChk()
                    if chkSearch.getPlayer().getName() == player.getName():
                        if chkSearch.getPos() == 0:
                            chk = chkSearch

        if chk == None:
            chk = self.__handleEvents()
        else:
            return chk # move without select (get out from home)

        while chk == False or chk.getPlayer() <> player:
            chk = self.__handleEvents()
        return chk