-
Notifications
You must be signed in to change notification settings - Fork 0
1.0.x
Rahul Nanwani edited this page Jan 11, 2022
·
14 revisions
A complete package for creating a multiplayer blackjack table.
- Create Tables.
- Max. 5 players per table.
- Hit, Stand, Double Down, Split.
pip install blackjack21
pip install --upgrade blackjack21
pip install blackjack21==1.0.0
from blackjack21 import Table
def print_cards(player):
print(f"\n{player.name}")
for card in player.hand:
print(f"{card.rank} of {card.suit}")
print(player.total)
def play_round(player):
print_cards(player)
while not (player.bust or player.stand):
action = int(input("\nHit(1), Stand(2): "))
if action == 1:
player.play_hit()
print_cards(player)
elif action == 2:
player.play_stand()
def show_result(table):
print_cards(table.dealer)
print(f"\nDealer has {table.dealer.total}")
for player in table.players:
result = player.get_result()
if result > 0:
print(f"{player.name} wins ${player.bet} ({player.total})")
elif result == 0:
print(f"{player.name}, hand tied ({player.total})")
else:
print(f"{player.name} loses ${player.bet} ({player.total})")
def main():
a = ("Charlotte", 100)
players = (a,)
table = Table(players)
table.dealer.deal_cards()
for player in table.players:
play_round(player)
table.dealer.play_dealer()
show_result(table)
if __name__ == "__main__":
main()
from blackjack21 import Table
def print_cards(player):
print(f"\n{player.name}")
for card in player.hand:
print(f"{card.rank} of {card.suit}")
print(player.total)
def play_hit_or_stand(player):
while not (player.bust or player.stand):
action = int(input("\nHit(1), Stand(2): "))
if action == 1:
player.play_hit()
print_cards(player)
elif action == 2:
player.play_stand()
def play_round(player):
print_cards(player)
if player.can_split():
action = int(input("\nHit(1), Stand(2), Double down(3), Split(4): "))
else:
action = int(input("\nHit(1), Stand(2), Double down(3): "))
if action == 1:
player.play_hit()
print_cards(player)
elif action == 2:
player.play_stand()
elif action == 3:
player.play_double_down()
print_cards(player)
elif action == 4 and player.can_split():
player.play_split()
print_cards(player)
play_hit_or_stand(player)
if player.split:
print_cards(player.split)
play_hit_or_stand(player.split)
def print_player_result(player):
result = player.get_result()
if result == 3:
print(f"The dealer is bust, {player.name} wins ${player.bet} ({player.total})")
elif result in [1, 2]:
print(f"{player.name} wins ${player.bet} ({player.total})")
elif result == 0:
print(f"{player.name}, hand tied ({player.total})")
elif result == -1:
print(f"{player.name} loses ${player.bet} ({player.total})")
else:
print(f"{player.name} is bust, loses ${player.bet} ({player.total})")
def show_result(table):
print_cards(table.dealer)
print(f"\nDealer has {table.dealer.total}")
for player in table.players:
print_player_result(player)
if player.split:
print_player_result(player.split)
def main():
a = ("Charlotte", 100)
b = ("Jennifer", 200)
players = (a, b)
table = Table(players)
table.dealer.deal_cards()
for player in table.players:
play_round(player)
table.dealer.play_dealer()
show_result(table)
if __name__ == "__main__":
main()
Table(players, dealer, suits, ranks)
-
players: A tuple of player tuples, where a player tuple is as
(name: str, bet: int)
(Min. 1 player, Max. 5 players) - dealer: Name of the dealer as a string (Default: "Dealer")
- suits: A tuple of 4 suits (Default: ("Hearts", "Diamonds", "Spades", "Clubs"))
- ranks: A tuple of 13 ranks ace to king (Default: ("A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"))
- players: A tuple of Player objects
- dealer: Dealer object
- deck: A list of Card objects in the deck
This object will be created by creating a Table object.
- name: Dealer name string
- hand: A list of Card objects in the dealer's hand
- total: Sum of the card values in the hand
- bust: A bool if the dealer has a total of more than 21
- stand: A bool if the dealer has a total of more than 17
- deal_cards(): This method will deal two cards to each hand and self(the dealer's total will be considered only for the first card), returns a bool for successful dealing of cards to each hand
- play_dealer(): Use this method after all players have finished playing their hand, returns None
A list of these objects will be created under the list deck attribute of the Table object.
- suit: Suit of the card as a string
- rank: Rank of the card as a string
blackjack21 v2.0.1