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