From 6d5421d4d047de5288f388e2f0a1f253e7e4bc42 Mon Sep 17 00:00:00 2001 From: ThomasMorrissey Date: Wed, 25 Feb 2015 08:05:56 -0600 Subject: [PATCH 1/3] Git commit 2-26-2015 --- Challenge_1.py | 200 +++++++++++++++++++++++++++++++++++++++++++++++++ Challenge_2.py | 53 +++++++++++++ Challenge_3.py | 197 ++++++++++++++++++++++++++++++++++++++++++++++++ Challenge_4.py | 4 + 4 files changed, 454 insertions(+) create mode 100644 Challenge_1.py create mode 100644 Challenge_2.py create mode 100644 Challenge_3.py create mode 100644 Challenge_4.py diff --git a/Challenge_1.py b/Challenge_1.py new file mode 100644 index 0000000..60de790 --- /dev/null +++ b/Challenge_1.py @@ -0,0 +1,200 @@ +#! bin/usr/python3 +# Program Name: Challenge_1.py +# Author: Thomas Morrissey +# Date Written: 2-24-2015 +# Collaberated with Tyler Gurrea + +import cards, games + +class BJ_Card(cards.Card): + """ A Blackjack Card. """ + ACE_VALUE = 1 + + @property + def value(self): + if self.is_face_up: + v = BJ_Card.RANKS.index(self.rank) + 1 + if v > 10: + v = 10 + else: + v = None + return v + +class BJ_Deck(cards.Deck): + """ A Blackjack Deck. """ + def populate(self): + for suit in BJ_Card.SUITS: + for rank in BJ_Card.RANKS: + self.cards.append(BJ_Card(rank, suit)) + + +class BJ_Hand(cards.Hand): + """ A Blackjack Hand. """ + def __init__(self, name): + super(BJ_Hand, self).__init__() + self.name = name + + def __str__(self): + rep = self.name + ":\t" + super(BJ_Hand, self).__str__() + if self.total: + rep += "(" + str(self.total) + ")" + return rep + + @property + def total(self): + # if a card in the hand has value of None, then total is None + for card in self.cards: + if not card.value: + return None + + # add up card values, treat each Ace as 1 + t = 0 + for card in self.cards: + t += card.value + + # determine if hand contains an Ace + contains_ace = False + for card in self.cards: + if card.value == BJ_Card.ACE_VALUE: + contains_ace = True + + # if hand contains Ace and total is low enough, treat Ace as 11 + if contains_ace and t <= 11: + # add only 10 since we've already added 1 for the Ace + t += 10 + + return t + + def is_busted(self): + return self.total > 21 + + +class BJ_Player(BJ_Hand): + """ A Blackjack Player. """ + def is_hitting(self): + response = games.ask_yes_no("\n" + self.name + ", do you want a hit? (Y/N): ") + return response == "y" + + def bust(self): + print(self.name, "busts.") + self.lose() + + def lose(self): + print(self.name, "loses.") + + def win(self): + print(self.name, "wins.") + + def push(self): + print(self.name, "pushes.") + + +class BJ_Dealer(BJ_Hand): + """ A Blackjack Dealer. """ + def is_hitting(self): + return self.total < 17 + + def bust(self): + print(self.name, "busts.") + + def flip_first_card(self): + first_card = self.cards[0] + first_card.flip() + + +class BJ_Game(object): + """ A Blackjack Game. """ + def __init__(self, names): + self.players = [] + for name in names: + player = BJ_Player(name) + self.players.append(player) + + self.dealer = BJ_Dealer("Dealer") + + self.deck = BJ_Deck() + self.deck.populate() + self.deck.shuffle() + + @property + def still_playing(self): + sp = [] + for player in self.players: + if not player.is_busted(): + sp.append(player) + return sp + + def __additional_cards(self, player): + while not player.is_busted() and player.is_hitting(): + if self.deck == 0: + self.deck = BJ_Deck() + self.deck.populate() + self.deck.shuffle() + + self.deck.deal([player]) + print(player) + if player.is_busted(): + player.bust() + + def play(self): + # deal initial 2 cards to everyone + self.deck.deal(self.players + [self.dealer], per_hand = 2) + self.dealer.flip_first_card() # hide dealer's first card + for player in self.players: + print(player) + print(self.dealer) + + # deal additional cards to players + for player in self.players: + self.__additional_cards(player) + + self.dealer.flip_first_card() # reveal dealer's first + + if not self.still_playing: + # since all players have busted, just show the dealer's hand + print(self.dealer) + else: + # deal additional cards to dealer + print(self.dealer) + self.__additional_cards(self.dealer) + + if self.dealer.is_busted(): + # everyone still playing wins + for player in self.still_playing: + player.win() + else: + # compare each player still playing to dealer + for player in self.still_playing: + if player.total > self.dealer.total: + player.win() + elif player.total < self.dealer.total: + player.lose() + else: + player.push() + + # remove everyone's cards + for player in self.players: + player.clear() + self.dealer.clear() + + +def main(): + print("\t\tWelcome to Blackjack!\n") + + names = [] + number = games.ask_number("How many players? (1 - 7): ", low = 1, high = 8) + for i in range(number): + name = input("Enter player name: ") + names.append(name) + print() + + game = BJ_Game(names) + + again = None + while again != "n": + game.play() + again = games.ask_yes_no("\nDo you want to play again?: ") + + +main() +input("\n\nPress the enter key to exit.") diff --git a/Challenge_2.py b/Challenge_2.py new file mode 100644 index 0000000..3c86cf5 --- /dev/null +++ b/Challenge_2.py @@ -0,0 +1,53 @@ +#! bin/usr/python3 +# Program Name: Challenge_2.py +# Author: Thomas Morrissey +# Date Written: 2-24-2015 +# Luke Gosnell Help Spell Check. +import random +Ranks = ["A" , "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"] +Suit = ["Diamonds","Hearts","Clubs","Spades"] +Player1Counter=0 +Player2Counter=0 +print("Welcome to WAR!") +print("You and a friend will play war until one of the two of you gains ten points.") +print("Before we begin, please enter your names.") +Player1Name=input("Player One: ") +Player2Name=input("Player Two: ") +while Player1Counter < 10 and Player2Counter < 10: + Player1CardIndex=random.randrange(len(Ranks)) + Player2CardIndex=random.randrange(len(Ranks)) + Player1Card=Ranks[Player1CardIndex] + Player2Card=Ranks[Player2CardIndex] + if Player1CardIndex > 9: + Player1CardIndex = 10 + else: + Player1CardIndex = Player1CardIndex + 1 + if Player2CardIndex > 9: + Player2CardIndex = 10 + else: + Player2CardIndex = Player2CardIndex + 1 + Player1SuitIndex=random.randrange(len(Suit)) + Player1Suit=Suit[Player1SuitIndex] + Player2SuitIndex=random.randrange(len(Suit)) + Player2Suit=Suit[Player2SuitIndex] + print(Player1Name,"has a",Player1Card,"of",Player1Suit+".") + print(Player2Name,"has a",Player2Card,"of",Player2Suit+".") + if Player1CardIndex > Player2CardIndex: + print(Player1Name,"Wins and Gains One Point!") + Player1Counter = Player1Counter + 1 + elif Player2CardIndex > Player1CardIndex: + print(Player2Name,"Wins and Gains One Point!") + Player2Counter=Player2Counter+1 + else: + print("It's a Draw and No One wins! =(") + print("Total Scores Are:") + print(Player1Name+":",Player1Counter) + print(Player2Name+":",Player2Counter) + input("Please press the key to start a new round.") +if Player1Counter == 10: + print(Player1Name,"has and has provined to be the ultimate champion!") +else: + print(Player2Name,"has and has provined to be the ultimate champion!") +print("Thank you for playing!") +input("Please press the key to exit.") + diff --git a/Challenge_3.py b/Challenge_3.py new file mode 100644 index 0000000..5616834 --- /dev/null +++ b/Challenge_3.py @@ -0,0 +1,197 @@ +#! bin/usr/python3 +# Program Name: Challenge_3.py +# Author: Thomas Morrissey +# Date Written: 2-26-2015 +import cards, games + +class BJ_Card(cards.Card): + """ A Blackjack Card. """ + ACE_VALUE = 1 + + @property + def value(self): + if self.is_face_up: + v = BJ_Card.RANKS.index(self.rank) + 1 + if v > 10: + v = 10 + else: + v = None + return v + +class BJ_Deck(cards.Deck): + """ A Blackjack Deck. """ + def populate(self): + for suit in BJ_Card.SUITS: + for rank in BJ_Card.RANKS: + self.cards.append(BJ_Card(rank, suit)) + + +class BJ_Hand(cards.Hand): + """ A Blackjack Hand. """ + def __init__(self, name): + super(BJ_Hand, self).__init__() + self.name = name + + def __str__(self): + rep = self.name + ":\t" + super(BJ_Hand, self).__str__() + if self.total: + rep += "(" + str(self.total) + ")" + return rep + + @property + def total(self): + # if a card in the hand has value of None, then total is None + for card in self.cards: + if not card.value: + return None + + # add up card values, treat each Ace as 1 + t = 0 + for card in self.cards: + t += card.value + + # determine if hand contains an Ace + contains_ace = False + for card in self.cards: + if card.value == BJ_Card.ACE_VALUE: + contains_ace = True + + # if hand contains Ace and total is low enough, treat Ace as 11 + if contains_ace and t <= 11: + # add only 10 since we've already added 1 for the Ace + t += 10 + + return t + + def is_busted(self): + return self.total > 21 + + +class BJ_Player(BJ_Hand): + """ A Blackjack Player. """ + def is_hitting(self): + response = games.ask_yes_no("\n" + self.name + ", do you want a hit? (Y/N): ") + return response == "y" + + def bust(self): + print(self.name, "busts.") + self.lose() + + def lose(self): + print(self.name, "loses.") + + def win(self): + print(self.name, "wins.") + + def push(self): + print(self.name, "pushes.") + + +class BJ_Dealer(BJ_Hand): + """ A Blackjack Dealer. """ + def is_hitting(self): + return self.total < 17 + + def bust(self): + print(self.name, "busts.") + + def flip_first_card(self): + first_card = self.cards[0] + first_card.flip() + + +class BJ_Game(object): + """ A Blackjack Game. """ + def __init__(self, names): + self.players = [] + for name in names: + player = BJ_Player(name) + self.players.append(player) + + self.dealer = BJ_Dealer("Dealer") + + self.deck = BJ_Deck() + self.deck.populate() + self.deck.shuffle() + + @property + def still_playing(self): + sp = [] + for player in self.players: + if not player.is_busted(): + sp.append(player) + return sp + + def __additional_cards(self, player): + while not player.is_busted() and player.is_hitting(): + self.deck.deal([player]) + print(player) + if player.is_busted(): + player.bust() + + def play(self): + # deal initial 2 cards to everyone + self.deck.deal(self.players + [self.dealer], per_hand = 2) + self.dealer.flip_first_card() # hide dealer's first card + for player in self.players: + print(player) + print(self.dealer) + + # deal additional cards to players + for player in self.players: + self.__additional_cards(player) + + self.dealer.flip_first_card() # reveal dealer's first + + if not self.still_playing: + # since all players have busted, just show the dealer's hand + print(self.dealer) + else: + # deal additional cards to dealer + print(self.dealer) + self.__additional_cards(self.dealer) + + if self.dealer.is_busted(): + # everyone still playing wins + for player in self.still_playing: + player.win() + else: + # compare each player still playing to dealer + for player in self.still_playing: + if player.total > self.dealer.total: + player.win() + elif player.total < self.dealer.total: + player.lose() + else: + player.push() + + # remove everyone's cards + for player in self.players: + player.clear() + self.dealer.clear() + + +def main(): + print("\t\tWelcome to Blackjack!\n") + + names = [] + number = games.ask_number("How many players? (1 - 7): ", low = 1, high = 8) + for i in range(number): + name = input("Enter player name: ") + names.append(name) + print() + + game = BJ_Game(names) + + again = None + while again != "n": + game.play() + again = games.ask_yes_no("\nDo you want to play again?: ") + + +main() +input("\n\nPress the enter key to exit.") + + + + diff --git a/Challenge_4.py b/Challenge_4.py new file mode 100644 index 0000000..7c560af --- /dev/null +++ b/Challenge_4.py @@ -0,0 +1,4 @@ +#! bin/usr/python3 +# Program Name: Challenge_4.py +# Author: Thomas Morrissey +# Date Written: 2-26-2015 From 5d488cf4c9ab90b7ec2c32fab833aa9ca9271a43 Mon Sep 17 00:00:00 2001 From: ThomasMorrissey Date: Thu, 5 Mar 2015 08:13:12 -0600 Subject: [PATCH 2/3] Had help with Chalenge_3.py From Tyler Gurrea and Jose Chica. --- Challenge_3.py | 378 +++++++++++++++++-------------- Challenge_4.py | 4 - __pycache__/cards.cpython-32.pyc | Bin 0 -> 3872 bytes __pycache__/games.cpython-32.pyc | Bin 0 -> 1650 bytes blackjack.py | 5 + 5 files changed, 218 insertions(+), 169 deletions(-) delete mode 100644 Challenge_4.py create mode 100644 __pycache__/cards.cpython-32.pyc create mode 100644 __pycache__/games.cpython-32.pyc diff --git a/Challenge_3.py b/Challenge_3.py index 5616834..97e026c 100644 --- a/Challenge_3.py +++ b/Challenge_3.py @@ -2,191 +2,240 @@ # Program Name: Challenge_3.py # Author: Thomas Morrissey # Date Written: 2-26-2015 -import cards, games +# Code Based on classroom.google.com/c/MzIxNDYx, I was directed to this website by Tyler Gurrea. +# I could not fix this program so I moved on to Challenge_2.py. + + # Blackjack + # From 1 to 7 players compete against a dealer + +import cards, games class BJ_Card(cards.Card): - """ A Blackjack Card. """ - ACE_VALUE = 1 - - @property - def value(self): - if self.is_face_up: - v = BJ_Card.RANKS.index(self.rank) + 1 - if v > 10: - v = 10 - else: - v = None - return v + """ A Blackjack Card. """ + ACE_VALUE = 1 + + @property + def value(self): + if self.is_face_up: + v = BJ_Card.RANKS.index(self.rank) + 1 + if v > 10: + v = 10 + else: + v = None + return v class BJ_Deck(cards.Deck): - """ A Blackjack Deck. """ - def populate(self): - for suit in BJ_Card.SUITS: - for rank in BJ_Card.RANKS: - self.cards.append(BJ_Card(rank, suit)) - + """ A Blackjack Deck. """ + def populate(self): + for suit in BJ_Card.SUITS: + for rank in BJ_Card.RANKS: + self.cards.append(BJ_Card(rank, suit)) + class BJ_Hand(cards.Hand): - """ A Blackjack Hand. """ - def __init__(self, name): - super(BJ_Hand, self).__init__() - self.name = name - - def __str__(self): - rep = self.name + ":\t" + super(BJ_Hand, self).__str__() - if self.total: - rep += "(" + str(self.total) + ")" - return rep - - @property - def total(self): - # if a card in the hand has value of None, then total is None - for card in self.cards: - if not card.value: - return None - - # add up card values, treat each Ace as 1 - t = 0 - for card in self.cards: - t += card.value - - # determine if hand contains an Ace - contains_ace = False - for card in self.cards: - if card.value == BJ_Card.ACE_VALUE: - contains_ace = True - - # if hand contains Ace and total is low enough, treat Ace as 11 - if contains_ace and t <= 11: - # add only 10 since we've already added 1 for the Ace - t += 10 - - return t - - def is_busted(self): - return self.total > 21 + """ A Blackjack Hand. """ + def __init__(self, name): + super(BJ_Hand, self).__init__() + self.name = name + def __str__(self): + rep = self.name + ":\t" + super(BJ_Hand, self).__str__() + if self.total: + rep += "(" + str(self.total) + ")" + return rep -class BJ_Player(BJ_Hand): - """ A Blackjack Player. """ - def is_hitting(self): - response = games.ask_yes_no("\n" + self.name + ", do you want a hit? (Y/N): ") - return response == "y" + @property + def total(self): + # if a card in the hand has value of None, then total is None + for card in self.cards: + if not card.value: + return None + + # add up card values, treat each Ace as 1 + t = 0 + for card in self.cards: + t += card.value + + # determine if hand contains an Ace + contains_ace = False + for card in self.cards: + if card.value == BJ_Card.ACE_VALUE: + contains_ace = True + + # if hand contains Ace and total is low enough, treat Ace as 11 + if contains_ace and t<= 11: + # add only 10 since we've already added 1 for the Ace + t += 10 - def bust(self): - print(self.name, "busts.") - self.lose() + return t - def lose(self): - print(self.name, "loses.") + def is_busted(self): + return self.total> 21 - def win(self): - print(self.name, "wins.") + + + +class BJ_Player(BJ_Hand): + """ A Blackjack Player. """ + def betting(bet,stash): + try: + if stash> 0: + wager = int(input("\nHow much do you want to wager?: ")) + if wager> stash: + int(input("\n You can only wager what you have. How much?: ")) + elif wager < 0: + int(input("\n You can only wager what you have. How much?: ")) + except ValueError: + int(input("\n That's not valid! Choose a number: ")) + + def is_hitting(self): + response = games.ask_yes_no("\n" + self.name + ", do you want a hit?(Y/N): ") + return response == "y" + + def bust(self,stash,wager): + print(self.name, "busts.") + self.lose(self,stash,wager) + + def lose(self,stash,wager): + print(self.name, "loses.") + stash = stash - wager + print("Your stash is: ",stash) + return stash + + def win(self,stash,wager): + print(self.name, "wins.") + stash = stash + wager + print("Your stash is: ",stash) + return stash + + def push(self): + print(self.name, "pushes.") + + def __init__(bet, money = 10): + stash = money - def push(self): - print(self.name, "pushes.") - class BJ_Dealer(BJ_Hand): - """ A Blackjack Dealer. """ - def is_hitting(self): - return self.total < 17 + """ A Blackjack Dealer. """ + def is_hitting(self): + return self.total< 17 - def bust(self): - print(self.name, "busts.") + def bust(self): + print(self.name, "busts.") - def flip_first_card(self): - first_card = self.cards[0] - first_card.flip() + def flip_first_card(self): + first_card = self.cards[0] + first_card.flip() class BJ_Game(object): - """ A Blackjack Game. """ - def __init__(self, names): - self.players = [] - for name in names: - player = BJ_Player(name) - self.players.append(player) - - self.dealer = BJ_Dealer("Dealer") - - self.deck = BJ_Deck() - self.deck.populate() - self.deck.shuffle() - - @property - def still_playing(self): - sp = [] - for player in self.players: - if not player.is_busted(): - sp.append(player) - return sp - - def __additional_cards(self, player): - while not player.is_busted() and player.is_hitting(): - self.deck.deal([player]) - print(player) - if player.is_busted(): - player.bust() - - def play(self): - # deal initial 2 cards to everyone - self.deck.deal(self.players + [self.dealer], per_hand = 2) - self.dealer.flip_first_card() # hide dealer's first card - for player in self.players: - print(player) - print(self.dealer) - - # deal additional cards to players - for player in self.players: - self.__additional_cards(player) - - self.dealer.flip_first_card() # reveal dealer's first - - if not self.still_playing: - # since all players have busted, just show the dealer's hand - print(self.dealer) - else: - # deal additional cards to dealer - print(self.dealer) - self.__additional_cards(self.dealer) - - if self.dealer.is_busted(): - # everyone still playing wins - for player in self.still_playing: - player.win() - else: - # compare each player still playing to dealer - for player in self.still_playing: - if player.total > self.dealer.total: - player.win() - elif player.total < self.dealer.total: - player.lose() - else: - player.push() - - # remove everyone's cards - for player in self.players: - player.clear() - self.dealer.clear() - + """ A Blackjack Game. """ + def __init__(self, names): + self.players = [] + for name in names: + stash = 100 + player = BJ_Player(name) + bet=BJ_Player(name).betting(stash) + playerbet = Bet(stash).betting(stash) + self.players.append(player) + + self.dealer = BJ_Dealer("Dealer") + self.deck = BJ_Deck() + self.deck.populate() + self.deck.shuffle() + + + + + # Money Conditions + def gamble(bet): + if bet.stash<= 0: + print("\nYou are out of money! You're out of the game!") + + @property + def betting(bet,stash): + try: + if stash> 0: + wager = int(input("\nHow much do you want to wager?: ")) + if wager> stash: + int(input("\n You can only wager what you have. How much?: ")) + elif wager < 0: + int(input("\n You can only wager what you have. How much?: ")) + except ValueError: + int(input("\n That's not valid! Choose a number: ")) + def still_playing(self): + sp = [] + for player in self.players: + if not player.is_busted(): + sp.append(player) + return sp + + def __additional_cards(self, player,stash,wager): + while not player.is_busted() and player.is_hitting(): + self.deck.deal([player]) + print(player) + if player.is_busted(): + player.bust(self,stash,wager) + + def play(self,stash,wager): + # deal initial 2 cards to everyone + self.deck.deal(self.players + [self.dealer], per_hand = 2) + self.dealer.flip_first_card() # hide dealer's first card + for player in self.players: + print(player) + print(self.dealer) + + # deal additional cards to players + for player in self.players: + self.__additional_cards(player,stash,wager) + + self.dealer.flip_first_card() # reveal dealer's first + + if not self.still_playing: + # since all players have busted, just show the dealer's hand + print(self.dealer) + else: + # deal additional cards to dealer + print(self.dealer) + self.__additional_cards(self.dealer,stash,wager) + + if self.dealer.is_busted(): + # everyone still playing wins + for player in self.still_playing: + player.win(stash,wager) + else: + # compare each player still playing to dealer + for player in self.still_playing: + if player.total> self.dealer.total: + player.win(stash,wager) + elif player.total< self.dealer.total: + player.lose(stash,wager) + else: + player.push() + + # remove everyone's cards + for player in self.players: + player.clear() + self.dealer.clear() + def main(): - print("\t\tWelcome to Blackjack!\n") - - names = [] - number = games.ask_number("How many players? (1 - 7): ", low = 1, high = 8) - for i in range(number): - name = input("Enter player name: ") - names.append(name) - print() - - game = BJ_Game(names) - - again = None - while again != "n": - game.play() - again = games.ask_yes_no("\nDo you want to play again?: ") + print("\t\tWelcome to Blackjack!\n") + stash = 0 + wager = 0 + names = [] + number = games.ask_number("How many players? (1 - 7): ", low = 1, high = 8) + for i in range(number): + name = input("Enter player name: ") + names.append(name) + print() + + game = BJ_Game(names) + + again = None + while again != "n": + game.play(stash,wager) + again = games.ask_yes_no("\nDo you want to play again?: ") main() @@ -194,4 +243,3 @@ def main(): - diff --git a/Challenge_4.py b/Challenge_4.py deleted file mode 100644 index 7c560af..0000000 --- a/Challenge_4.py +++ /dev/null @@ -1,4 +0,0 @@ -#! bin/usr/python3 -# Program Name: Challenge_4.py -# Author: Thomas Morrissey -# Date Written: 2-26-2015 diff --git a/__pycache__/cards.cpython-32.pyc b/__pycache__/cards.cpython-32.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b8c1379e42efe2201b97b29c31c3caf8ea03312c GIT binary patch literal 3872 zcmcgv`EMIV6n^U?sg2z$y<5Q+Bx)g%^Z?pIRgoqL+Dhg~P^*Y&Sv>1_6MJ{FM@gjS zr}j_g58(UWuGfw!P^^kg=Ixu=nR)j&<6*1aJc|C|&&i?=C*&W!VgC)&7x8^O z7p!zhvX4Mk2I0tCNk?HE`$^&*uB;8*DD`6J{tEq+EJugg3CwdGKk!q>q2OczM63q> z%2?C1(!7t+fo;3c`kFFo>TX3Y9$69~SeAf+12#Hb(^aoNf1VqA+_b+Mqe~{n(m}Bo zsYUy)}2+JHAa%q3) zM;EvSwGgYj*=gWi#3XP>p5v%k#~Fnt8?u`lX2Kr$Iwt?L+I_mA+{Vw3H#gLGn{nnH z3v97U-JvrmSd*~Wei-)LVd6M*+OdXgQdgXWMonwMI&WRF&Q@CW#-fVj_cEL4IJQS< z$tnokJ&PQ#QSLwmMK6LuRqGxoqToeHsOtzIVF8Ior({<^>{WZ<2F4Ei#}FY|wvUM~ zgH8n7Q4LV5W>T3NT)J25B=?jWIA5%ped8j#3ciSUsT1>@+pqE4I!IAqUl!GLuw0C+ zZ(orkK#CJY)G)%ktxn-3&w&t{R#J54=&79zM(qt+X(s21t(y zBr&UX6!oVuq$lP`kEud@pE6q12Zgv`owlz2Z882&aZ&q+o*UnwYIza%^o2g(Wulxz zClAW5f*TxfnMuBIo))3zOGXTJqsR-)44^S2b2^d{a*g=}ud${a;=^~T>2-8wHASWX zppi8*YIEU?+OanZUw9gMNSn!rvHFS{VLHH3!g8A8d)0aAjD>W@rLa+&jd)?_l_4YR`-&<~6E~23l2x@oQP$L=(p65vSheQjf^OK0O-<&vlx8Vl7?aYxf40jYp+0aeBJK&3(%4sA{ z>1leIO)a;<@D?gElmZl4ys$O5PwnFDt`8!4uG4Q&(1asRsbrA#`$KP1Br^p)nLdX_ z#KuCvJ+gF;SS`zE!u04#J`_R!s!cei9!Z(CxX4_ z9olJVdk22H+|4goOvLcFU9Xo;Abt+=ye8})>*fjzCAj;B7ohbL8eyBXiO?pVF S34cp0onN}NbfIN6tv>fdPT}-9nzqH{6KP)D)$16O6VM-D|`X@g- zI4oT{W8_NUBngw?Z!f2K203Z^77B%?JUOyMZDdYX!oHRDuj>@>9C8x=8H)Z$Ph{Us zv@w;na@yY+6^)Zdyy;Vnw%1HOp&>-2Dknr6=a$?8>#{jS6bv~Ip+CV1#(fluvEf1z zM+xD(agGay_>%s>lYHAw|9GuD}0$JP0M(-)I*#vqcJ-OHbY%z7i&E%YAeJoq9lNK163$KOUsP4*;>ml zPOitjkE+OY#Q5|n!Awl=fO!tF1c*OX0Z8Gv3qL|30zn_)#cez01)oaGk)KNQV=t|% zwCZ`H+cZcuW8KouqId(XA`L6mco)i7>l0}rQ3mwaM;%<@NGCx;q(QZr2!KpBLb2HlwN{Mz@ Date: Fri, 6 Mar 2015 06:52:34 -0600 Subject: [PATCH 3/3] My Contributers are Jose Chica, Tyler Gurrea, and Jacob Snipes. My Code for Challenge_3.py is based around Jacob's code for the challenge. --- Challenge_3.py | 107 ++++++++++++++++++++++++------------------------- 1 file changed, 52 insertions(+), 55 deletions(-) diff --git a/Challenge_3.py b/Challenge_3.py index 97e026c..e2d11f9 100644 --- a/Challenge_3.py +++ b/Challenge_3.py @@ -2,8 +2,8 @@ # Program Name: Challenge_3.py # Author: Thomas Morrissey # Date Written: 2-26-2015 -# Code Based on classroom.google.com/c/MzIxNDYx, I was directed to this website by Tyler Gurrea. -# I could not fix this program so I moved on to Challenge_2.py. +# Code Based on classroom.google.com/c/MzIxNDYx, I was directed to this website by Tyler Gurrea, and the code is also based around Jacob Snipe's code. +# My Contributers are Tyler Gurrea, Jose Chica, and Jacob Snipes. # Blackjack # From 1 to 7 players compete against a dealer @@ -73,46 +73,55 @@ def is_busted(self): return self.total> 21 - +class Bet(object): + def __init__( bet, money=10): + banroll = money + def betting(bet, bankroll): + try: + if bankroll > 0 : + wager = int(input("How much do you want to wager? ")) + if wager > bankroll: + wager=int(input("You can olny wager",bankroll,"or less. How much?")) + elif wager < 0: + wager=int(input("You can only wager a postivite number. How much? ")) + except ValueError: + wager=int(input("That's not a number, how much would you like to wager? ")) + return wager + def gamble(bet): + if bet.bankroll <- 0: + print("You are out of money! you're out of the game!") class BJ_Player(BJ_Hand): """ A Blackjack Player. """ - def betting(bet,stash): - try: - if stash> 0: - wager = int(input("\nHow much do you want to wager?: ")) - if wager> stash: - int(input("\n You can only wager what you have. How much?: ")) - elif wager < 0: - int(input("\n You can only wager what you have. How much?: ")) - except ValueError: - int(input("\n That's not valid! Choose a number: ")) + def __init__(self, name, bankroll, playerbet): + super(BJ_Player,self).__init__(name) + self.bankroll=bankroll + self.wager=playerbet def is_hitting(self): response = games.ask_yes_no("\n" + self.name + ", do you want a hit?(Y/N): ") return response == "y" - def bust(self,stash,wager): + def bust(self,wager): print(self.name, "busts.") - self.lose(self,stash,wager) + self.lose(self.wager) - def lose(self,stash,wager): + def lose(self,wager): print(self.name, "loses.") - stash = stash - wager - print("Your stash is: ",stash) - return stash + self.bankroll = self.bankroll-self.wager + print("Your stash is: ",self.bankroll) + return self.bankroll - def win(self,stash,wager): + def win(self,wager): print(self.name, "wins.") - stash = stash + wager - print("Your stash is: ",stash) - return stash + self.bankroll = self.bankroll+self.wager + print("Your stash is: ",self.bankroll) + return self.bankroll def push(self): print(self.name, "pushes.") - def __init__(bet, money = 10): - stash = money + class BJ_Dealer(BJ_Hand): @@ -133,10 +142,9 @@ class BJ_Game(object): def __init__(self, names): self.players = [] for name in names: - stash = 100 - player = BJ_Player(name) - bet=BJ_Player(name).betting(stash) - playerbet = Bet(stash).betting(stash) + bankroll = 100 + playerbet=Bet(bankroll).betting(bankroll) + player = BJ_Player(name,bankroll,playerbet) self.players.append(player) self.dealer = BJ_Dealer("Dealer") @@ -146,23 +154,7 @@ def __init__(self, names): - - # Money Conditions - def gamble(bet): - if bet.stash<= 0: - print("\nYou are out of money! You're out of the game!") - @property - def betting(bet,stash): - try: - if stash> 0: - wager = int(input("\nHow much do you want to wager?: ")) - if wager> stash: - int(input("\n You can only wager what you have. How much?: ")) - elif wager < 0: - int(input("\n You can only wager what you have. How much?: ")) - except ValueError: - int(input("\n That's not valid! Choose a number: ")) def still_playing(self): sp = [] for player in self.players: @@ -170,14 +162,16 @@ def still_playing(self): sp.append(player) return sp - def __additional_cards(self, player,stash,wager): + def __additional_cards(self, player,wager): while not player.is_busted() and player.is_hitting(): self.deck.deal([player]) print(player) if player.is_busted(): - player.bust(self,stash,wager) - - def play(self,stash,wager): + player.bust(self) + def __player_broke(self): + if player is not broke and player.cash <=0: + player.broke + def play(self,wager): # deal initial 2 cards to everyone self.deck.deal(self.players + [self.dealer], per_hand = 2) self.dealer.flip_first_card() # hide dealer's first card @@ -187,7 +181,7 @@ def play(self,stash,wager): # deal additional cards to players for player in self.players: - self.__additional_cards(player,stash,wager) + self.__additional_cards(player,wager) self.dealer.flip_first_card() # reveal dealer's first @@ -197,7 +191,7 @@ def play(self,stash,wager): else: # deal additional cards to dealer print(self.dealer) - self.__additional_cards(self.dealer,stash,wager) + self.__additional_cards(self.dealer,wager) if self.dealer.is_busted(): # everyone still playing wins @@ -207,9 +201,9 @@ def play(self,stash,wager): # compare each player still playing to dealer for player in self.still_playing: if player.total> self.dealer.total: - player.win(stash,wager) + player.win(wager) elif player.total< self.dealer.total: - player.lose(stash,wager) + player.lose(wager) else: player.push() @@ -217,11 +211,14 @@ def play(self,stash,wager): for player in self.players: player.clear() self.dealer.clear() + self.deck =BJ_Deck() + self.deck.populate() + self.deck.shuffle() def main(): print("\t\tWelcome to Blackjack!\n") - stash = 0 + bankroll = 0 wager = 0 names = [] number = games.ask_number("How many players? (1 - 7): ", low = 1, high = 8) @@ -234,7 +231,7 @@ def main(): again = None while again != "n": - game.play(stash,wager) + game.play(wager) again = games.ask_yes_no("\nDo you want to play again?: ")