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
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()
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