From 2693f6a2cc95be49311796236f5e3d8dc0c4e5e2 Mon Sep 17 00:00:00 2001 From: Soumya Kushwaha Date: Sat, 22 Oct 2022 21:07:53 +0530 Subject: [PATCH] Add files via upload --- WarCardGame.py | 211 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 WarCardGame.py diff --git a/WarCardGame.py b/WarCardGame.py new file mode 100644 index 00000000..1fc13c6e --- /dev/null +++ b/WarCardGame.py @@ -0,0 +1,211 @@ +import random + +suits = ('Hearts', 'Spades', 'Diamonds', 'Clubs') +ranks = ('Two, Three, Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten', + 'Jack', 'Queen', 'King', 'Ace') +values = {'Two':2, 'Three':3, 'Four':4, 'Five':5, 'Six':6, 'Seven':7, 'Eight':8, + 'Nine':9, 'Ten':10, 'Jack':10, 'Queen':10, 'King':10, 'Ace':11} + +playing = True + +class Card: + + def __init__(self, suit, rank): + self.suit = suit + self.rank = rank + + def __str__(self): + return self.rank + " of " + self.suit + +class Deck: + + def __init__(self): + self.deck = [] # start with an empty list + for suit in suits: + for rank in ranks: + self.deck.append(Card(suit,rank)) # build Card objects and add them to the list + + def __str__(self): + deck_comp = '' # start with an empty string + for card in self.deck: + deck_comp += '\n '+card.__str__() # add each Card object's print string + return 'The deck has:' + deck_comp + + def shuffle(self): + random.shuffle(self.deck) + + def deal(self): + single_card = self.deck.pop() + return single_card + +class Hand: + def __init__(self): + self.cards = [] # start with an empty list as we did in the Deck class + self.value = 0 # start with zero value + self.aces = 0 # add an attribute to keep track of aces + + def add_card(self,card): + self.cards.append(card) + self.value += values[card.rank] + if card.rank == 'Ace': + self.aces += 1 + + def adjust_for_ace(self): + while self.value > 21 and self.aces: + self.value -= 10 + self.aces -= 1 + +class Chips: + + def __init__(self): + self.total = 100 # This can be set to a default value or supplied by a user input + self.bet = 0 + + def win_bet(self): + self.total += self.bet + + def lose_bet(self): + self.total -= self.bet + +def take_bet(chips): + + while True: + try: + chips.bet = int(input('How many chips would you like to bet? ')) + except ValueError: + print('Sorry, a bet must be an integer!') + else: + if chips.bet > chips.total: + print("Sorry, your bet can't exceed",chips.total) + else: + break + +def hit(deck,hand): + + hand.add_card(deck.deal()) + hand.adjust_for_ace() + +def hit_or_stand(deck,hand): + global playing # to control an upcoming while loop + + while True: + x = input("Would you like to Hit or Stand? Enter 'h' or 's' ") + + if x[0].lower() == 'h': + hit(deck,hand) # hit() function defined above + + elif x[0].lower() == 's': + print("Player stands. Dealer is playing.") + playing = False + + else: + print("Sorry, please try again.") + continue + break + +def show_some(player,dealer): + print("\nDealer's Hand:") + print("