Skip to main content

A texasholdem python package

Project description

texasholdem

A python package for Texas Hold 'Em Poker.

Current Release Version v0.4.4

v1.0.0 Roadmap

Contributing

To be added as a contributor, please email me at evyn.machi@gmail.com with your GitHub username and mention one of the open issues / a new issue you would like to tackle first. For more information about contributing, please see the wiki.

Install

pip install texasholdem

Quickstart Guide

Playing a game from the command line is as simple as the following:

from texasholdem import TexasHoldEm, TextGUI

game = TexasHoldEm(buyin=500,
                   big_blind=5,
                   small_blind=2,
                   max_players=6)
gui = TextGUI()
gui.set_player_ids(list(range(6)))      # see all cards
while game.is_game_running():
    game.start_hand()
    while game.is_hand_running():
        gui.print_state(game)

        action, val = gui.accept_input()
        while not game.validate_move(game.current_player, action, val):
            print(f"{action} {val} is not valid for player {game.current_player}")
            action, val = gui.accept_input()

        gui.print_action(game.current_player, action, val)
        game.take_action(action, val)

Game Information

Get game information and take actions through intuitive attributes:

from texasholdem import TexasHoldEm, HandPhase, ActionType

game = TexasHoldEm(buyin=500, 
                   big_blind=5, 
                   small_blind=2,
                   max_players=9)
game.start_hand()

assert game.hand_phase == HandPhase.PREFLOP
assert HandPhase.PREFLOP.next_phase() == HandPhase.FLOP
assert game.chips_to_call(game.current_player) == game.big_blind

game.take_action(ActionType.CALL)
game.take_action(ActionType.RAISE, value=10)

assert game.chips_to_call(game.current_player) == 10 - game.big_blind

Card Module

The card module represents cards as 32-bit integers for simple and fast hand evaluations. For more information about the representation, see the Card module.

from texasholdem import Card

card = Card("Kd")                       # King of Diamonds
assert isinstance(card, int)            # True
assert card.rank == 11                  # 2nd highest rank (0-12)
assert card.pretty_string == "[ K ♦ ]"

The game.get_hand(player_id=...) method of the TexasHoldEm class will return a list of type list[Card].

Evaluator Module

The evaluator module returns the rank of the best 5-card hand from a list of 5 to 7 cards. The rank is a number from 1 (strongest) to 7462 (weakest). This determines the winner in the TexasHoldEm module:

from texasholdem import Card, evaluate, rank_to_string

assert evaluate(cards=[Card("Kd"), Card("5d")],
                board=[Card("Qd"), 
                       Card("6d"), 
                       Card("5s"), 
                       Card("2d"),
                       Card("5h")]) == 927
assert rank_to_string(927) == "Flush, King High"

History Module

Export and import the history of hands:

from texasholdem import TexasHoldEm, TextGUI

game = TexasHoldEm(buyin=500, big_blind=5, small_blind=2)
game.start_hand()

while game.is_hand_running():
    game.take_action(*some_strategy(game))

# export to file
game.export_history("./pgns/my_game.pgn")

# import and replay
gui = TextGUI()
for state in TexasHoldEm.import_history("./pgns/my_game.pgn"):
    gui.print_state(state)

PGN files also support single line and end of line comments starting with "#".

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

texasholdem-0.4.4.tar.gz (25.8 kB view details)

Uploaded Source

Built Distribution

texasholdem-0.4.4-py3-none-any.whl (31.8 kB view details)

Uploaded Python 3

File details

Details for the file texasholdem-0.4.4.tar.gz.

File metadata

  • Download URL: texasholdem-0.4.4.tar.gz
  • Upload date:
  • Size: 25.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for texasholdem-0.4.4.tar.gz
Algorithm Hash digest
SHA256 688715e9782aacb64f03c05e103d0b07310a318aa11648957505e306e6966ba4
MD5 225185d3e497475cc3fda51597c7d72b
BLAKE2b-256 754b2ed05e9c58a4ce23ae201ff02a94c3695ccdc9ab7e7d49b9b5f1e7feef8f

See more details on using hashes here.

Provenance

File details

Details for the file texasholdem-0.4.4-py3-none-any.whl.

File metadata

  • Download URL: texasholdem-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 31.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for texasholdem-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b5290d65ad32c5f05077d42d6b19d0d52c79afdd6159fa063ec1b277ea6e03ce
MD5 469d1dff0bb7cfdbf7f90527edf41568
BLAKE2b-256 b38040fc81451f38ef2a97c838319173dc795feeb849450c7dc86fed3e83bd30

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page