21点游戏

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
import random


class (object):
def __init__(self):
self.index = 0
self.cards = []
for x in range(4):
for y in range(1, 14):
card = Card(x, y)
self.cards.append(card)

def bush_card(self):
random.shuffle(self.cards)

def give_card(self):
card = self.cards[self.index]
self.index += 1
return card

def is_or(self):
if self.index >= len(self.cards):
return False
else:
return True


class Card(object):
def __init__(self, color, num):
self.color = color
self.num = num

def __repr__(self):
all_color = ['黑桃', '红桃', '梅花', '方块']
all_num = ['', 'A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
return f'{all_color[self.color]}{all_num[self.num]}'

def __add__(self, other):
return self.num + other.num


class Players:
def __init__(self, name):
self.name = name
self.cards = []

def get_card(self, p: Pokers):
card = p.give_card()
self.cards.append(card)


def main():
p = Pokers()
persons = ['姜柯', '罗虎', '肖应中', '王小华']
all_players = []
p.bush_card()
for name in persons:
temp = {}
play = Players(name)
play.get_card(p)
play.get_card(p)
temp['name'] = play.name
temp['cards'] = play.cards
temp['sum'] = temp['cards'][0] + temp['cards'][1]
all_players.append(temp)
for name_num in all_players:
if name_num['sum'] > 21:
name_num['sum'] = name_num['sum'] - 21
all_players.sort(key=lambda x: x['sum'], reverse=True)
print(f'本次游戏的扑克牌顺序为{p.cards}')
print('游戏开始:n')
print(all_players)
print(f"获胜者是{all_players[0]['name']},最大点数为{all_players[0]['sum']}")


if __name__ == '__main__':
main()

2019-04-20