Module bluff.chinese

Bluff's Chinese Poker sub-module.

Expand source code
""" Bluff's Chinese Poker sub-module. """

from typing import Dict

import bluff


class Hand(bluff.Hand):
    """ Abstract chinese bluff hand class"""

    _ROYALTIES_DICT: Dict[float, int] = {}

    @property
    def royalties(self) -> int:
        """ Get hand royalties. """
        for value, points in sorted(self._ROYALTIES_DICT.items(), reverse=True):
            if self.value > value:
                return points
        return 0


class TopHand(Hand):
    """ Chinese bluff top hand"""

    _ROYALTIES_DICT: Dict[float, int] = {
        int("6" + "0" * 5, 16): 1,
        int("7" + "0" * 5, 16): 2,
        int("8" + "0" * 5, 16): 3,
        int("9" + "0" * 5, 16): 4,
        int("A" + "0" * 5, 16): 5,
        int("B" + "0" * 5, 16): 6,
        int("C" + "0" * 5, 16): 7,
        int("D" + "0" * 5, 16): 8,
        int("E" + "0" * 5, 16): 9,
        int("2" + "0" * 8, 16): 10,
        int("3" + "0" * 8, 16): 11,
        int("4" + "0" * 8, 16): 12,
        int("5" + "0" * 8, 16): 13,
        int("6" + "0" * 8, 16): 14,
        int("7" + "0" * 8, 16): 15,
        int("8" + "0" * 8, 16): 16,
        int("9" + "0" * 8, 16): 17,
        int("A" + "0" * 8, 16): 18,
        int("B" + "0" * 8, 16): 19,
        int("C" + "0" * 8, 16): 20,
        int("D" + "0" * 8, 16): 21,
        int("E" + "0" * 8, 16): 22,
    }


class MiddleHand(Hand):
    """ Chinese bluff top hand"""

    _ROYALTIES_DICT: Dict[float, int] = {
        int("2" + "0" * 8, 16): 2,
        int("2" + "0" * 9, 16): 4,
        int("2" + "0" * 10, 16): 8,
        int("2" + "0" * 11, 16): 12,
        int("2" + "0" * 13, 16): 20,
        int("2" + "0" * 14, 16): 30,
        int("E" + "0" * 14, 16): 50,
    }


class BottomHand(Hand):
    """ Chinese bluff top hand"""

    _ROYALTIES_DICT: Dict[int, int] = {
        int("2" + "0" * 9, 16): 2,
        int("2" + "0" * 10, 16): 4,
        int("2" + "0" * 11, 16): 6,
        int("2" + "0" * 13, 16): 10,
        int("2" + "0" * 14, 16): 15,
        int("E" + "0" * 14, 16): 25,
    }


class Player(bluff.Player):
    """ Chinese bluff player. """

    def __init__(self, name: str, points: int):
        super().__init__(name=name, chips=points)
        self._top_hand: Hand = TopHand()
        self._middle_hand: Hand = MiddleHand()
        self._bottom_hand: Hand = BottomHand()

    @property
    def top_hand(self) -> Hand:
        """ Get or set top hand. """
        return self._top_hand

    @top_hand.setter
    def top_hand(self, value: Hand):
        self._top_hand = value

    @property
    def middle_hand(self) -> Hand:
        """ Get or set middle hand. """
        return self._middle_hand

    @middle_hand.setter
    def middle_hand(self, value: Hand):
        self._middle_hand = value

    @property
    def bottom_hand(self) -> Hand:
        """ Get or set bottom hand. """
        return self._bottom_hand

    @bottom_hand.setter
    def bottom_hand(self, value: Hand):
        self._bottom_hand = value

    def place_card(self, card: bluff.Card, hand: str):
        """ Place a card in one of the three chinese bluff hands. """
        if "top" in hand.lower():
            self.top_hand.add(card)
        elif "mid" in hand.lower():
            self.middle_hand.add(card)
        elif "bot" in hand.lower():
            self.bottom_hand.add(card)
        else:
            raise ValueError(f"{hand} is not a valid hand.")


class Poker(bluff.Poker):
    """ Chinese Poker. """

    _N_STARTING_CARDS: int = 13

Classes

class BottomHand (*args: Union[Card, str])

Chinese bluff top hand

Expand source code
class BottomHand(Hand):
    """ Chinese bluff top hand"""

    _ROYALTIES_DICT: Dict[int, int] = {
        int("2" + "0" * 9, 16): 2,
        int("2" + "0" * 10, 16): 4,
        int("2" + "0" * 11, 16): 6,
        int("2" + "0" * 13, 16): 10,
        int("2" + "0" * 14, 16): 15,
        int("E" + "0" * 14, 16): 25,
    }

Ancestors

Inherited members

class Hand (*args: Union[Card, str])

Abstract chinese bluff hand class

Expand source code
class Hand(bluff.Hand):
    """ Abstract chinese bluff hand class"""

    _ROYALTIES_DICT: Dict[float, int] = {}

    @property
    def royalties(self) -> int:
        """ Get hand royalties. """
        for value, points in sorted(self._ROYALTIES_DICT.items(), reverse=True):
            if self.value > value:
                return points
        return 0

Ancestors

Subclasses

Instance variables

var royalties : int

Get hand royalties.

Expand source code
@property
def royalties(self) -> int:
    """ Get hand royalties. """
    for value, points in sorted(self._ROYALTIES_DICT.items(), reverse=True):
        if self.value > value:
            return points
    return 0

Inherited members

class MiddleHand (*args: Union[Card, str])

Chinese bluff top hand

Expand source code
class MiddleHand(Hand):
    """ Chinese bluff top hand"""

    _ROYALTIES_DICT: Dict[float, int] = {
        int("2" + "0" * 8, 16): 2,
        int("2" + "0" * 9, 16): 4,
        int("2" + "0" * 10, 16): 8,
        int("2" + "0" * 11, 16): 12,
        int("2" + "0" * 13, 16): 20,
        int("2" + "0" * 14, 16): 30,
        int("E" + "0" * 14, 16): 50,
    }

Ancestors

Inherited members

class Player (name: str, points: int)

Chinese bluff player.

Expand source code
class Player(bluff.Player):
    """ Chinese bluff player. """

    def __init__(self, name: str, points: int):
        super().__init__(name=name, chips=points)
        self._top_hand: Hand = TopHand()
        self._middle_hand: Hand = MiddleHand()
        self._bottom_hand: Hand = BottomHand()

    @property
    def top_hand(self) -> Hand:
        """ Get or set top hand. """
        return self._top_hand

    @top_hand.setter
    def top_hand(self, value: Hand):
        self._top_hand = value

    @property
    def middle_hand(self) -> Hand:
        """ Get or set middle hand. """
        return self._middle_hand

    @middle_hand.setter
    def middle_hand(self, value: Hand):
        self._middle_hand = value

    @property
    def bottom_hand(self) -> Hand:
        """ Get or set bottom hand. """
        return self._bottom_hand

    @bottom_hand.setter
    def bottom_hand(self, value: Hand):
        self._bottom_hand = value

    def place_card(self, card: bluff.Card, hand: str):
        """ Place a card in one of the three chinese bluff hands. """
        if "top" in hand.lower():
            self.top_hand.add(card)
        elif "mid" in hand.lower():
            self.middle_hand.add(card)
        elif "bot" in hand.lower():
            self.bottom_hand.add(card)
        else:
            raise ValueError(f"{hand} is not a valid hand.")

Ancestors

Instance variables

var bottom_handHand

Get or set bottom hand.

Expand source code
@property
def bottom_hand(self) -> Hand:
    """ Get or set bottom hand. """
    return self._bottom_hand
var middle_handHand

Get or set middle hand.

Expand source code
@property
def middle_hand(self) -> Hand:
    """ Get or set middle hand. """
    return self._middle_hand
var top_handHand

Get or set top hand.

Expand source code
@property
def top_hand(self) -> Hand:
    """ Get or set top hand. """
    return self._top_hand

Methods

def place_card(self, card: Card, hand: str)

Place a card in one of the three chinese bluff hands.

Expand source code
def place_card(self, card: bluff.Card, hand: str):
    """ Place a card in one of the three chinese bluff hands. """
    if "top" in hand.lower():
        self.top_hand.add(card)
    elif "mid" in hand.lower():
        self.middle_hand.add(card)
    elif "bot" in hand.lower():
        self.bottom_hand.add(card)
    else:
        raise ValueError(f"{hand} is not a valid hand.")

Inherited members

class Poker (n_seats: int = 9)

Chinese Poker.

Expand source code
class Poker(bluff.Poker):
    """ Chinese Poker. """

    _N_STARTING_CARDS: int = 13

Ancestors

Inherited members

class TopHand (*args: Union[Card, str])

Chinese bluff top hand

Expand source code
class TopHand(Hand):
    """ Chinese bluff top hand"""

    _ROYALTIES_DICT: Dict[float, int] = {
        int("6" + "0" * 5, 16): 1,
        int("7" + "0" * 5, 16): 2,
        int("8" + "0" * 5, 16): 3,
        int("9" + "0" * 5, 16): 4,
        int("A" + "0" * 5, 16): 5,
        int("B" + "0" * 5, 16): 6,
        int("C" + "0" * 5, 16): 7,
        int("D" + "0" * 5, 16): 8,
        int("E" + "0" * 5, 16): 9,
        int("2" + "0" * 8, 16): 10,
        int("3" + "0" * 8, 16): 11,
        int("4" + "0" * 8, 16): 12,
        int("5" + "0" * 8, 16): 13,
        int("6" + "0" * 8, 16): 14,
        int("7" + "0" * 8, 16): 15,
        int("8" + "0" * 8, 16): 16,
        int("9" + "0" * 8, 16): 17,
        int("A" + "0" * 8, 16): 18,
        int("B" + "0" * 8, 16): 19,
        int("C" + "0" * 8, 16): 20,
        int("D" + "0" * 8, 16): 21,
        int("E" + "0" * 8, 16): 22,
    }

Ancestors

Inherited members