-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCardDrawer.py
97 lines (83 loc) · 3.38 KB
/
CardDrawer.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
import math
class CardDrawer(object):
symbols = {"vbar": "║", "hbar": "═", "1": "╔", "2": "╗", "3": "╝", "4": "╚", "clubs": "♣", "diamonds": "♦", "hearts": "♥", "spades": "♠"}
empty_hand = [[0,0], [0,0], [0,0], [0,0], [0,0]]
# 13, 9
def get_hand(self, cards, dims):
card_visual_representations = []
for card in cards:
card_visual_representations.append(self.get_card_repr(card[0], card[1], dims))
return self.get_side_by_side_representation(card_visual_representations, dims)
def get_hand_of_empty_cards(self, dims):
return self.get_hand(self.empty_hand, dims)
def get_card_repr(self, value, suite, dims):
if value == 1:
value = "A"
elif value == 11:
value = "J"
elif value == 12:
value = "Q"
elif value == 13:
value = "K"
else:
value = str(value)
cardstr = ""
for i in range(dims[1]):
if i == 0:
cardstr += self.symbols["1"]
cardstr += self.symbols["hbar"] * (dims[0]-2)
cardstr += self.symbols["2"]
cardstr += "\n"
continue
elif i == dims[1]-1:
cardstr += self.symbols["4"]
cardstr += self.symbols["hbar"]* (dims[0]-2)
cardstr += self.symbols["3"]
cardstr += "\n"
continue
elif value == "0":
width = 0
cardstr += self.symbols["vbar"]
cardstr += " " * (math.floor(dims[0]/3) -1)
cardstr += "*"
cardstr += " " * (math.floor(dims[0]/3) -1)
cardstr += "*"
cardstr += " " * (math.floor(dims[0]/3) -2)
cardstr += self.symbols["vbar"]
cardstr += "\n"
elif i == math.floor(dims[1]/2) - 1 or i == math.floor(dims[1]/2 + 1):
cardstr += self.symbols["vbar"]
cardstr += " " * math.floor(dims[0]/2 - 1)
cardstr += self.symbols[suite]
cardstr += " " * (math.floor(dims[0]/2) - 1)
cardstr += self.symbols["vbar"]
cardstr += "\n"
continue
elif i == math.floor(dims[1]/2):
cardstr += self.symbols["vbar"]
cardstr += " " * math.floor(dims[0]/2 - 1)
cardstr += value
if value == "10":
cardstr += " " * (math.floor(dims[0]/2) - 2)
else:
cardstr += " " * (math.floor(dims[0]/2) - 1)
cardstr += self.symbols["vbar"]
cardstr += "\n"
continue
else:
cardstr += self.symbols["vbar"]
cardstr += " " * (dims[0] - 2)
cardstr += self.symbols["vbar"]
cardstr += "\n"
return cardstr
def get_side_by_side_representation(self, cards, dims):
sbs_repr = ""
for i in range(dims[0] - 3):
for card in cards:
sbs_repr += card.split("\n")[i] + " " * 4
sbs_repr += "\n"
return sbs_repr
if __name__ == "__main__":
testhand = [[10, "spades"], [11, "spades"], [6, "hearts"], [1, "clubs"], [4, "spades"]]
cd = CardDrawer()
print(cd.get_hand_of_empty_cards([15, 12]))