def drawCheckers(self): """ Draw the checkers of all players in screen """ self.chkSprites = [] # list of sprites drawing checkers coordinates = [] # coordinates of square pyr_idx = 0 # player index # iterate players for player in self.players: checkers = player.getCheckers() # add a group of sprites (four checker of a player) # to the list of chkSprites self.chkSprites.append(pygame.sprite.Group()) # iterate checkers for this player for chk in checkers: chkSprite = CheckerSprite(chk, self.image_path) # add chkSprite with image checker to current group self.chkSprites[pyr_idx].add(chkSprite) # inc player index pyr_idx += 1 # iterate over sprites GROUP for chkSprite in self.chkSprites: chkCheckers = [] zeros = 0 # iterate checker for current group for checker in chkSprite: chk = checker.getChk() # don't process barriers if already did it in processBarrier if chk not in chkCheckers: barrier = self._processBarrier(chk, checker.getImage(), chkCheckers, self.chkSprites) # if chk wasn't processed in processBarrrier, # draw it separately if chk not in chkCheckers: square = chk.getSquare() # detect checkers at home, indexes changes for these, # so we fix index number for each one if chk.getPos() == 0: coordinates = square.getCoord(chk, zeros) zeros += 1 else: coordinates = square.getCoord() self.screen.blit(checker.getImage(), coordinates) chk.setCoordPos(coordinates)
def breakFiveBarrier(self, processTurn, player, chkID, dVal): breakBarrier = True if processTurn == -1: # recall for processing break barrier at # initial position with dVal = 5, sending -1 # for advice checkers = player.getCheckers() for chk in checkers: chkToMove = player.checkIfHasBarrier(chk, dVal, self.getNormalSquares(), self.getStairSquares(player)) if chk == chkToMove: # this chk is not in a barrier movement = player.checkIfChkCanMove(chk, dVal, self.getNormalSquares(), self.getStairSquares(player)) # this chk can move, it is not necessary break barrier if movement <> False: breakBarrier = False logging.info("break barrier: %s", breakBarrier) if breakBarrier == True: processTurn = self.nextTurn(player, -1, chkID, False) else: chk = self.__blockUntilSelect(player, dVal, breakBarrier) chkID = chk.getID() logging.info("barrier in dVal: %s and chkID: %s", dVal, chkID) processTurn = self.nextTurn(player, -1, chkID, True) if processTurn <> False: return processTurn else: return dVal