-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplaying_cards2.257.py
More file actions
79 lines (59 loc) · 1.63 KB
/
playing_cards2.257.py
File metadata and controls
79 lines (59 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# Playing Cards 2.0
# Demonstrates inheritance - class extension
# pg 257
class Card(object):
RANKS = ['A', '2', '3', '4', '5', '6', '7', '8', '9', 'J', 'Q', 'K']
SUITS = ['c', 'd', 'h', 's']
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
def __str__(self):
return '{}{}'.format(self.rank, self.suit)
class Hand(object):
def __init__(self):
self.cards = []
def __str__(self):
if self.cards:
hand = ''
for card in self.cards:
hand += '{} '.format(card)
return hand
return '<empty>'
def clear(self):
self.cards = []
def add(self, card):
self.cards.append(card)
def give(self, card, other_hand):
self.cards.remove(card)
other_hand.add(card)
class Deck(Hand):
def populate(self):
for suit in Card.SUITS:
for rank in Card.RANKS:
self.add(Card(rank, suit))
def shuffle(self):
import random
random.shuffle(self.cards)
def deal(self, hands, per_hand=1):
for rounds in range(per_hand):
for hand in hands:
if self.cards:
self.give(self.cards[0], hand)
#main
deck = Deck()
print('Created a new deck.')
print('DECK:', deck)
deck.populate()
print('Populated deck.')
print('DECK:', deck)
deck.shuffle()
print('Shuffled deck.')
print('DECK:', deck)
my_hand = Hand()
your_hand = Hand()
hands = [my_hand, your_hand]
deck.deal(hands, per_hand=5)
print('Dealt 5 cards to each hand.')
print('MY HAND:' , my_hand)
print('YOUR HAND:', your_hand)
print('DECK:', deck)