コード例 #1
0
ファイル: game_state.py プロジェクト: warezt/Hexapawn
    def get_moves(self):
        """ Returns a list of all possible moves from this piece."""
        row_offset = 1 if self.color == label.RED else -1
        left_offset = -1
        right_offset = 1

        moves = []

        # Try advance
        if self.state.check_cell(self.pos.row + row_offset,
                                 self.pos.col) == label.BLANK:
            moves.append(
                Move(self, Position(self.pos.row + row_offset, self.pos.col)))

        # Left attack
        if self.state.check_cell(self.pos.row + row_offset, self.pos.col + left_offset) == \
                label.get_opposite(self.color):
            moves.append(
                Move(
                    self,
                    Position(self.pos.row + row_offset,
                             self.pos.col + left_offset)))

        # Right attack
        if self.state.check_cell(self.pos.row + row_offset, self.pos.col + right_offset) == \
                label.get_opposite(self.color):
            moves.append(
                Move(
                    self,
                    Position(self.pos.row + row_offset,
                             self.pos.col + right_offset)))

        return moves
コード例 #2
0
ファイル: game_state.py プロジェクト: warezt/Hexapawn
    def check_gameover(self):
        """Checks if the gameover state has occurred."""
        # Check no piece end
        red = 0
        blue = 0
        for i, j in itertools.product(range(3), range(self.width)):
            if self.board[i][j] == label.RED:
                red += 1
            elif self.board[i][j] == label.BLUE:
                blue += 1
        if red == 0:
            self.winner = label.BLUE
            return True
        elif blue == 0:
            self.winner = label.RED
            return True

        # Check RED end line
        for i in range(self.width):
            if self.board[2][i] == label.RED:
                self.winner = label.RED
                return True

        # Check BLUE end line
        for i in range(self.width):
            if self.board[0][i] == label.BLUE:
                self.winner = label.BLUE
                return True

        # No moves available
        if len(self.get_available_moves()) == 0:
            self.winner = label.get_opposite(self.turn)
            return True
コード例 #3
0
ファイル: game_state.py プロジェクト: Hydrotoast/Hexapawn
    def check_gameover(self):
        """Checks if the gameover state has occurred."""
        # Check no piece end
        red = 0
        blue = 0
        for i, j in itertools.product(range(3), range(self.width)):
            if self.board[i][j] == label.RED:
                red += 1
            elif self.board[i][j] == label.BLUE:
                blue += 1
        if red == 0:
            self.winner = label.BLUE
            return True
        elif blue == 0:
            self.winner = label.RED
            return True

        # Check RED end line
        for i in range(self.width):
            if self.board[2][i] == label.RED:
                self.winner = label.RED
                return True

        # Check BLUE end line
        for i in range(self.width):
            if self.board[0][i] == label.BLUE:
                self.winner = label.BLUE
                return True

        # No moves available
        if len(self.get_available_moves()) == 0:
            self.winner = label.get_opposite(self.turn)
            return True
コード例 #4
0
ファイル: game_state.py プロジェクト: Hydrotoast/Hexapawn
    def get_moves(self):
        """ Returns a list of all possible moves from this piece."""
        row_offset = 1 if self.color == label.RED else -1
        left_offset = -1
        right_offset = 1

        moves = []

        # Try advance
        if self.state.check_cell(self.pos.row + row_offset, self.pos.col) == label.BLANK:
            moves.append(Move(self, Position(self.pos.row + row_offset, self.pos.col)))

        # Left attack
        if self.state.check_cell(self.pos.row + row_offset, self.pos.col + left_offset) == \
                label.get_opposite(self.color):
            moves.append(Move(self, Position(self.pos.row + row_offset, self.pos.col + left_offset)))

        # Right attack
        if self.state.check_cell(self.pos.row + row_offset, self.pos.col + right_offset) == \
                label.get_opposite(self.color):
            moves.append(Move(self, Position(self.pos.row + row_offset, self.pos.col + right_offset)))

        return moves
コード例 #5
0
ファイル: game_state.py プロジェクト: warezt/Hexapawn
 def alternate_turn(self):
     """Alternates the player turn on the board."""
     self.turn = label.get_opposite(self.turn)
コード例 #6
0
ファイル: game_state.py プロジェクト: Hydrotoast/Hexapawn
 def alternate_turn(self):
     """Alternates the player turn on the board."""
     self.turn = label.get_opposite(self.turn)