class Card:
def __init__(self, member, suit):
self.member = member
self.suit = suit
def __repr__(self):
return "[{s}-{m}]".format(s=self.suit, m=self.member)
class Deck:
suits = ["S", "C", "H", "D"]
members = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
def __init__(self):
#do not use this on exam, random isn't taught in 61a
from random import shuffle
self.deck = [Card(x, y) for x in Deck.members for y in Deck.suits]
self.deck_index = -1
shuffle(self.deck)
def __iter__(self):
return self
def __next__(self):
if self.deck_index == len(self.deck):
raise StopIteration
else:
self.deck_index += 1
return self.deck[self.deck_index]
class Player:
#simulates someone playing poker
def __init__(self, deck):
self.deck = iter(deck)
self.hand = []
self.total = 0
def __repr__(self):
return str(self.hand)
def __iter__(self):
return self
def __next__(self):
if self.total >= 21:
raise StopIteration
else:
draw = next(self.deck)
if draw.member == "A":
if self.total + 11 > 21:
self.total += 1
self.hand.append(draw)
return self.hand
else:
self.total += 11
self.hand.append(draw)
return self.hand
else:
if draw.member in ["J", "Q", "K"]:
self.total += 10
self.hand.append(draw)
return self.hand
else:
self.total += int(draw.member)
self.hand.append(draw)
return self.hand