diff --git a/BlackJack_game/blackjack.py b/BlackJack_game/blackjack.py new file mode 100644 index 00000000000..6968c48a228 --- /dev/null +++ b/BlackJack_game/blackjack.py @@ -0,0 +1,111 @@ +# BLACK JACK - CASINO + +import random + +deck=[1,2,3,4,5,6,7,8,9,10,10,10,10,11]*4 + +random.shuffle(deck) + + +print(" ********************************************************** ") +print(" Welcome to the game Casino - BLACK JACK ! ") +print(" ********************************************************** ") + + +d_cards = [] #Initialising dealer's cards +p_cards = [] #Initialising player's cards + +while len(d_cards) != 2: + random.shuffle(deck) + d_cards.append(deck.pop()) + if len(d_cards) == 2: + print('The cards dealer has are X ',d_cards[1]) + + + +# Displaying the Player's cards +while len(p_cards) != 2: + random.shuffle(deck) + p_cards.append(deck.pop()) + if len(p_cards) == 2: + print("The total of player is ",sum(p_cards)) + print("The cards Player has are ",p_cards) + + +if sum(p_cards) > 21: + print("You are BUSTED !\n **************Dealer Wins !!******************\n") + exit() + +if sum(d_cards) > 21: + print("Dealer is BUSTED !\n ************** You are the Winner !!******************\n") + exit() + +if sum(d_cards) == 21: + print("***********************Dealer is the Winner !!******************") + exit() + +if sum(d_cards) == 21 and sum(p_cards) == 21: + print("*****************The match is tie !!*************************") + exit() + + +def dealer_choice(): + if sum(d_cards) < 17: + while sum(d_cards) < 17: + random.shuffle(deck) + d_cards.append(deck.pop()) + + + print("Dealer has total "+ str(sum(d_cards))+"with the cards ",d_cards) + + if sum(p_cards) == sum(d_cards): + print("***************The match is tie !!****************") + exit() + + + if sum(d_cards) == 21: + if sum(p_cards) < 21: + print("***********************Dealer is the Winner !!******************") + elif sum(p_cards) == 21: + print("********************There is tie !!**************************") + else: + print("***********************Dealer is the Winner !!******************") + + elif sum(d_cards) <21: + if sum(p_cards) < 21 and sum(p_cards) < sum(d_cards): + print("***********************Dealer is the Winner !!******************") + if sum(p_cards) == 21: + print("**********************Player is winner !!**********************") + if sum(p_cards) < 21 and sum(p_cards) > sum(d_cards): + print("**********************Player is winner !!**********************") + + else: + if sum(p_cards) < 21: + print("**********************Player is winner !!**********************") + elif sum(p_cards) == 21: + print("**********************Player is winner !!**********************") + else: + print("***********************Dealer is the Winner !!******************") + + + + +while sum(p_cards) < 21: + + k = input('Want to hit or stay?\n Press 1 for hit and 0 for stay ') + if k == 1: + random.shuffle(deck) + p_cards.append(deck.pop()) + print ('You have a total of ' + str(sum(p_cards)) + + ' with the cards ', p_cards) + if sum(p_cards) > 21: + print ('*************You are BUSTED !*************\n Dealer Wins !!') + if sum(p_cards) == 21: + print ('*******************You are the Winner !!*****************************') + + + else: + dealer_choice() + break + + diff --git a/BlackJack_game/blackjack_rr.py b/BlackJack_game/blackjack_rr.py new file mode 100644 index 00000000000..a7a5ae4c6e3 --- /dev/null +++ b/BlackJack_game/blackjack_rr.py @@ -0,0 +1,223 @@ +import random + +suits = ('Hearts', 'Diamonds', 'Spades', '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 = [] + for suit in suits: + for rank in ranks: + self.deck.append(Card(suit,rank)) + + def __str__(self): + deck_comp = '' + for card in self.deck: + deck_comp += '\n '+card.__str__() + + 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 = [] + self.value = 0 + self.aces = 0 #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 + 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('Your bet must be an integer! Try again.') + else: + if chips.bet > chips.total or chips.bet<=0: + print("Your bet cannot exceed your balance and you have to enter a positive bet! Your current balance is: ",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 + + while True: + x = input("Would you like to Hit or Stand? Enter '1' or '0' ") + + if x.lower() == '1': + hit(deck,hand) + + elif x.lower() == '0': + print("You chose to stand. Dealer will hit.") + playing = False + + else: + print("Wrong input, please try again.") + continue + break + + +def show_some(player,dealer): + print("\nDealer's Hand:") + print(" { hidden card }") + print('',dealer.cards[1]) + print("\nYour Hand:", *player.cards, sep='\n ') + +def show_all(player,dealer): + print("\nDealer's Hand:", *dealer.cards, sep='\n ') + print("Dealer's Hand =",dealer.value) + print("\nYour Hand:", *player.cards, sep='\n ') + print("Your Hand =",player.value) + +def player_busts(player,dealer,chips): + print("You are BUSTED !") + chips.lose_bet() + +def player_wins(player,dealer,chips): + print("You are the winner!") + chips.win_bet() + +def dealer_busts(player,dealer,chips): + print("Dealer has BUSTED !") + chips.win_bet() + +def dealer_wins(player,dealer,chips): + print("Dealer is the winner!") + chips.lose_bet() + +def push(player,dealer): + print("The match is tie !") + +# GAMEPLAY + +while True: + + print("\t **********************************************************") + print("\t Welcome to the game Casino - BLACK JACK ! ") + print("\t **********************************************************") + print("\t ***************") + print("\t * A *") + print("\t * *") + print("\t * * *") + print("\t * *** *") + print("\t * ***** *") + print("\t * *** *") + print("\t * * *") + print("\t * *") + print("\t * *") + print("\t ***************") + + + + print('\nRULES: Get as close to 21 as you can but if you get more than 21 you will lose!\n Aces count as 1 or 11.') + + deck = Deck() + deck.shuffle() + + player_hand = Hand() + player_hand.add_card(deck.deal()) + player_hand.add_card(deck.deal()) + + dealer_hand = Hand() + dealer_hand.add_card(deck.deal()) + dealer_hand.add_card(deck.deal()) + + player_chips = Chips() + + + take_bet(player_chips) + + + show_some(player_hand,dealer_hand) + + while playing: + + hit_or_stand(deck,player_hand) + show_some(player_hand,dealer_hand) + + if player_hand.value > 21: + player_busts(player_hand,dealer_hand,player_chips) + break + + if player_hand.value <= 21: + + while dealer_hand.value < 17: + hit(deck,dealer_hand) + + show_all(player_hand,dealer_hand) + + if dealer_hand.value > 21: + dealer_busts(player_hand,dealer_hand,player_chips) + + elif dealer_hand.value > player_hand.value: + dealer_wins(player_hand,dealer_hand,player_chips) + + elif dealer_hand.value < player_hand.value: + player_wins(player_hand,dealer_hand,player_chips) + + else: + push(player_hand,dealer_hand) + + + print("\nYour current balance stands at",player_chips.total) + + if player_chips.total>0: + new_game = input("Would you like to play another hand? Enter '1' or '0' ") + if new_game.lower()=='1': + playing=True + continue + else: + print("Thanks for playing!\n \t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n \t Congratulations! You won {} coins!\n\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n ".format(player_chips.total)) + break + else: + print("Oops! You have bet all your chips and we are sorry you can't play more.\nThanks for playing! Do come again to Casino BLACK JACK!") + break diff --git a/Blackjack Game.py b/Blackjack Game.py deleted file mode 100644 index eaa51787c99..00000000000 --- a/Blackjack Game.py +++ /dev/null @@ -1,147 +0,0 @@ -import simplegui -import random - -CARD_SIZE = (72, 96) -CARD_CENTER = (36, 48) -card_images = simplegui.load_image("http://storage.googleapis.com/codeskulptor-assets/cards_jfitz.png") - -in_play = False -outcome = "" -score = 0 - -SUITS = ('C', 'S', 'H', 'D') -RANKS = ('A', '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K') -VALUES = {'A':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9, 'T':10, 'J':10, 'Q':10, 'K':10} - -class Card: - def __init__(self, suit, rank): - if (suit in SUITS) and (rank in RANKS): - self.suit = suit - self.rank = rank - else: - self.suit = None - self.rank = None - print("Invalid card: ", suit, rank) - - def __str__(self): - return self.suit + self.rank - - def get_suit(self): - return self.suit - - def get_rank(self): - return self.rank - - def draw(self, canvas, pos): - card_loc = (CARD_CENTER[0] + CARD_SIZE[0] * RANKS.index(self.rank), - CARD_CENTER[1] + CARD_SIZE[1] * SUITS.index(self.suit)) - canvas.draw_image(card_images, card_loc, CARD_SIZE, [pos[0] + CARD_CENTER[0], pos[1] + CARD_CENTER[1]], CARD_SIZE) - -def string_list_join(string,string_list): - ans = string + " contains " - for i in range(len(string_list)): - ans += str(string_list[i]) + " " - return ans - -class Hand: - def __init__(self): - self.hand = [] - - def __str__(self): - return string_list_join("Hand",self.hand) - - def add_card(self, card): - self.hand.append(card) - - def get_value(self): - var = [] - self.hand_value = 0 - for card in self.hand: - card = str(card) - if card[1] in VALUES: - self.hand_value += VALUES[card[1]] - var.append(card[1]) - if 'A' not in var: - return self.hand_value - if self.hand_value + 10 <= 21: - return self.hand_value + 10 - else: - return self.hand_value - - def draw(self, canvas, pos): - for card in self.hand: - card = str(card) - Card(card[0],card[1]).draw(canvas, pos) - pos[0] += 36 - -class Deck: - def __init__(self): - self.Deck = [ Card(suit,rank) for suit in SUITS for rank in RANKS ] - - def shuffle(self): - random.shuffle(self.Deck) - - def deal_card(self): - return random.choice(self.Deck) - - def __str__(self): - return string_list_join("Deck",self.Deck) - -def deal(): - global outcome, in_play, score1, score2, player_card, dealer_card, deck - outcome = "" - player_card = Hand() - dealer_card = Hand() - deck = Deck() - for i in range(2): - player_card.add_card(deck.deal_card()) - dealer_card.add_card(deck.deal_card()) - - in_play = True - score1 = str(player_card.get_value()) - score2 = str(dealer_card.get_value()) - -def stand(): - if in_play == True : - while dealer_card.get_value() < 17: - dealer_card.add_card(deck.deal_card()) - if dealer_card.get_value() > 21: - outcome = "you won!!" - elif player_card.get_value() <= dealer_card.get_value(): - outcome = "you lose" - else: - outcome = "you won!!" - score1 = str(player_card.get_value()) - score2 = str(dealer_card.get_value()) - -def hit(): - global outcome, in_play, score1, score2,player_card, dealer_card, deck - if in_play == True: - player_card.add_card(deck.deal_card()) - - if player_card.get_value() > 21: - outcome = "you are busted" - in_play = False - - score1 = str(player_card.get_value()) - score2 = str(dealer_card.get_value()) - -def draw(canvas): - canvas.draw_text(outcome , [250, 150],25 , 'White') - canvas.draw_text("BlackJack" , [250, 50], 40, 'Black') - canvas.draw_text(score1 , [100, 100] , 40, 'Red') - - player_card.draw(canvas , [20 ,300]) - dealer_card.draw(canvas , [300 ,300]) - canvas.draw_text(score2 , [400, 100] , 40, 'Red') - -frame = simplegui.create_frame("Blackjack", 600, 600) -frame.set_canvas_background("Green") - -frame.add_button("Deal", deal, 200) -frame.add_button("Hit", hit, 200) -frame.add_button("Stand", stand, 200) -frame.set_draw_handler(draw) - -deal() -frame.start() diff --git a/README.md b/README.md index 2062ffed3b9..9bfa0fac1bd 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,8 @@ Code documentation is aligned correctly when the files are viewed in [Notepad++] - [env_check.py](https://github.com/geekcomputers/Python/blob/master/env_check.py) - This script will check to see if all of the environment variables required are set. +- [blackjack.py](https://github.com/Ratna04priya/Python/blob/master/BlackJack_game/blackjack.py) - This script contains the Casino BlackJack-21 Game in Python. + - [fileinfo.py](https://github.com/geekcomputers/Python/blob/master/fileinfo.py) - Shows file information for a given file. - [folder_size.py](https://github.com/geekcomputers/Python/blob/master/folder_size.py) - Scans the current directory and all subdirectories and displays the size. diff --git a/blackjack.py b/blackjack.py new file mode 100644 index 00000000000..fdf9754d026 --- /dev/null +++ b/blackjack.py @@ -0,0 +1,112 @@ +# BLACK JACK - CASINO + +import random + +deck=[1,2,3,4,5,6,7,8,9,10,10,10,10,11]*4 + +random.shuffle(deck) + + +print(" ********************************************************** ") +print(" Welcome to the game Casino - BLACK JACK ! ") +print(" ********************************************************** ") + + +d_cards = [] #Initialising dealer's cards +p_cards = [] #Initialising player's cards + +while len(d_cards) != 2: + random.shuffle(deck) + d_cards.append(deck.pop()) + if len(d_cards) == 2: + print('The cards dealer has are X ',d_cards[1]) + + + +# Displaying the Player's cards +while len(p_cards) != 2: + random.shuffle(deck) + p_cards.append(deck.pop()) + if len(p_cards) == 2: + print("The total of player is ",sum(p_cards)) + print("The cards Player has are ",p_cards) + + +if sum(p_cards) > 21: + print("You are BUSTED !\n **************Dealer Wins !!******************\n") + exit() + +if sum(d_cards) > 21: + print("Dealer is BUSTED !\n ************** You are the Winner !!******************\n") + exit() + +if sum(d_cards) == 21: + print("***********************Dealer is the Winner !!******************") + exit() + +if sum(d_cards) == 21 and sum(p_cards) == 21: + print("*****************The match is tie !!*************************") + exit() + + +def dealer_choice(): + if sum(d_cards) < 17: + while sum(d_cards) < 17: + random.shuffle(deck) + d_cards.append(deck.pop()) + + + print("Dealer has total "+ str(sum(d_cards))+"with the cards ",d_cards) + + if sum(p_cards) == sum(d_cards): + print("***************The match is tie !!****************") + exit() + + + if sum(d_cards) == 21: + if sum(p_cards) < 21: + print("***********************Dealer is the Winner !!******************") + elif sum(p_cards) == 21: + print("********************There is tie !!**************************") + else: + print("***********************Dealer is the Winner !!******************") + + elif sum(d_cards) <21: + if sum(p_cards) < 21 and sum(p_cards) < sum(d_cards): + print("***********************Dealer is the Winner !!******************") + if sum(p_cards) == 21: + print("**********************Player is winner !!**********************") + if sum(p_cards) < 21 and sum(p_cards) > sum(d_cards): + print("**********************Player is winner !!**********************") + + else: + if sum(p_cards) < 21: + print("**********************Player is winner !!**********************") + elif sum(p_cards) == 21: + print("**********************Player is winner !!**********************") + else: + print("***********************Dealer is the Winner !!******************") + + + + +while sum(p_cards) < 21: + + k = input('Want to hit or stay?\n Press 1 for hit and 0 for stay ') + if k == 1: + random.shuffle(deck) + p_cards.append(deck.pop()) + print ('You have a total of ' + str(sum(p_cards)) + + ' with the cards ', p_cards) + if sum(p_cards) > 21: + print ('*************You are BUSTED !*************\n Dealer Wins !!') + if sum(p_cards) == 21: + print ('*******************You are the Winner !!*****************************') + + + else: + dealer_choice() + break + + +