import
random
def
pokers():
num
=
list
(i
for
i
in
range
(
2
,
11
))
num.extend(
'JQKA'
)
color
=
(
'梅花'
,
'方块'
,
'红桃'
,
'黑桃'
)
poker
=
[(m, n)
for
m
in
num
for
n
in
color]
return
poker
def
sure_names():
x
=
input
(
'自己输入玩家姓名或者\n输入N则自动生成五个玩家'
).strip()
gamers
=
[]
if
x
in
[
'N'
,
'n'
]:
gamers
=
[f
'玩家{i + 1}'
for
i
in
range
(
5
)]
else
:
gamers.append(x)
while
True
:
gamer
=
input
(
'请输入玩家姓名:\n 输入N则结束输入'
)
if
gamer
not
in
[
'N'
,
'n'
]:
gamers.append(gamer)
length_gamer
=
len
(gamers)
if
length_gamer >
14
:
print
(
'人数过多,牌不够分了'
)
break
else
:
break
return
gamers
def
hand_out_card(gamers, one_poker):
gamer_pork
=
{}
for
i
in
gamers:
gamer_pork[i]
=
[one_poker.pop(random.randint(
0
,
len
(one_poker)
-
1
))
for
i
in
range
(
3
)]
return
gamer_pork
class
GamerPork(
object
):
def
__init__(
self
, gamer_pork):
self
.name
=
gamer_pork[
0
]
self
.pork
=
gamer_pork[
1
]
self
.new_pork
=
[]
self
.i_type
=
None
self
.max_number
=
None
self
.max_colour
=
None
self
.data
=
None
def
class_pork(
self
):
deal_pork_resign
=
{
'J'
:
11
,
'Q'
:
12
,
'K'
:
13
,
'A'
:
14
,
'红桃'
:
4
,
'方块'
:
3
,
'黑桃'
:
2
,
'梅花'
:
1
}
for
i
in
self
.pork:
if
i[
0
]
in
deal_pork_resign:
new_pork_list_number
=
deal_pork_resign[i[
0
]]
else
:
new_pork_list_number
=
i[
0
]
if
i[
1
]
in
deal_pork_resign:
new_pork_list_colour
=
deal_pork_resign[i[
1
]]
else
:
new_pork_list_colour
=
i[
1
]
self
.new_pork.append((new_pork_list_number, new_pork_list_colour))
def
deal_pork(
self
):
new_pork_number
=
sorted
({i[
0
]
for
i
in
self
.new_pork})
new_pork_colour
=
sorted
({i[
1
]
for
i
in
self
.new_pork})
if
len
(new_pork_number)
=
=
1
:
self
.i_type
=
5
self
.max_number
=
new_pork_number[
0
]
self
.max_colour
=
new_pork_colour[
2
]
elif
len
(new_pork_number)
=
=
2
:
self
.i_type
=
2
self
.max_number
=
new_pork_number[
1
]
if
self
.new_pork[
0
][
0
]
=
=
self
.new_pork[
1
][
0
]:
self
.max_colour
=
max
(
self
.new_pork[
0
][
1
],
self
.new_pork[
1
][
1
])
if
self
.new_pork[
0
][
0
]
=
=
self
.new_pork[
2
][
0
]:
self
.max_colour
=
max
(
self
.new_pork[
0
][
1
],
self
.new_pork[
2
][
1
])
if
self
.new_pork[
2
][
0
]
=
=
self
.new_pork[
1
][
0
]:
self
.max_colour
=
max
(
self
.new_pork[
2
][
1
],
self
.new_pork[
1
][
1
])
else
:
if
new_pork_number[
2
]
-
new_pork_number[
1
]
=
=
1
and
new_pork_number[
2
]
-
new_pork_number[
0
]
=
=
2
:
if
len
(new_pork_colour)
=
=
1
:
self
.i_type
=
4
self
.max_number
=
new_pork_number[
2
]
self
.max_colour
=
new_pork_colour[
0
]
else
:
self
.i_type
=
3
self
.max_number
=
new_pork_number[
2
]
for
i, v
in
enumerate
(
self
.new_pork):
if
new_pork_number[
2
]
=
=
v[
0
]:
self
.max_colour
=
self
.new_pork[i][
1
]
else
:
self
.i_type
=
1
self
.max_number
=
new_pork_number[
2
]
for
i, v
in
enumerate
(
self
.new_pork):
if
new_pork_number[
2
]
=
=
v[
0
]:
self
.max_colour
=
self
.new_pork[i][
1
]
self
.data
=
(
self
.i_type,
self
.max_number,
self
.max_colour)
def
judge_winner(gamer_pork_list):
gamer_pork_list.sort(key
=
lambda
x : x.data, reverse
=
True
)
winner
=
gamer_pork_list[
0
].name
return
winner
def
main():
one_poker
=
pokers()
gamers
=
sure_names()
print
(gamers)
print
(
'='
*
100
)
gamer_pork_dicts
=
hand_out_card(gamers, one_poker)
print
(gamer_pork_dicts)
print
(
'='
*
100
)
gamer_pork_list
=
[]
for
k
in
gamer_pork_dicts.items():
gamer
=
GamerPork(k)
gamer.class_pork()
gamer.deal_pork()
gamer_pork_list.append(gamer)
winner
=
judge_winner(gamer_pork_list)
print
(f
'最后的大赢家为{winner}'
)
if
__name__
=
=
'__main__'
:
main()