-
Notifications
You must be signed in to change notification settings - Fork 3
/
card.py
95 lines (70 loc) · 1.86 KB
/
card.py
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
###############################################
# card.py
###############################################
import random
class Deck:
def __init__(self):
self.deck = []
cards = range(52)
for i in range(51):
index = random.randrange(len(cards))
self.deck.append(cards[index])
del cards[index]
self.deck.append(cards[0])
## # shuffle deck
## for i in range(1000):
## index = random.randrange(52)
## card = self.deck[index]
## del self.deck[index]
## self.deck = [card] + self.deck
def draw(self):
card = self.deck[0]
del self.deck[0]
return card
class CardList:
suit = [ 'Clubs', 'Diamonds', 'Hearts', 'Spades' ]
value = [ 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight',
'Nine', 'Ten', 'Jack', 'Queen', 'King', 'Ace' ]
def __init__(self, init=0):
self.cards = []
for i in range(52):
self.cards.append(init)
def hasCard( self, cardIndex ):
return self.cards[cardIndex]
def addCard( self, cardIndex ):
self.cards[cardIndex] = 1
def removeCard( self, cardIndex ):
self.cards[cardIndex] = 0
def hasSuit( self, suit ):
for i in range(suit*13, suit*13+13):
if self.cards[i]:
return 1
return 0
#
# return number of cards
#
def numCards( self ):
cnt = 0
for i in range(52):
if self.cards[i]:
cnt = cnt + 1
return cnt
#
# return first card found in list
#
def getFirstCard( self ):
for i in range(52):
if self.cards[i]:
return i
return -1
def cardSuit( cardIndex ):
return cardIndex / 13
def cardValue( cardIndex ):
return cardIndex % 13
def cardToString( cardIndex ):
return CardList.value[cardValue(cardIndex)] + ' of ' \
+ CardList.suit[cardSuit(cardIndex)]
if __name__ == '__main__':
deck = Deck()
print len(deck.deck)
print deck.deck