gpt4 book ai didi

python编写扎金花小程序的实例代码

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python编写扎金花小程序的实例代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

游戏规则:

一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢.

有以下几种牌:

豹子:三张一样的牌,如3张6. 。

顺金:又称同花顺,即3张同样花色的顺子, 如红桃 5、6、7 。

顺子:又称拖拉机,花色不同,但是顺子,如红桃5、方片6、黑桃7,组成的顺子 。

对子:2张牌一样 。

单张:单张最大的是A 。

这几种牌的大小顺序为, 豹子>顺金>顺子>对子>单张 。

程序需要实现的点:

  1. 先生成一付完整的扑克牌
  2. 给5个玩家随机发牌
  3. 统一开牌,比大小,输出赢家是谁

主要思路:

 把各种牌用积分来计算,最后加上三张牌的基础积分。即:最终积分=基础积分+牌型积分。最后比较最红积分,谁的积分大,谁排名就靠前。 附上源码:

?
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# -*- coding: utf-8 -*-
"""
# @Time   : 2021-01-07 14:55
# @author  : jianwei
# @Software : PyCharm
"""
 
import random
import operator
 
puke = [] # 存储扑克牌
num_list = [ '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '10' , 'J' , 'Q' , 'K' , 'A' ]
hua_list = [ '梅花' , '红桃' , '黑桃' , '方块' ]
sotr_dic = { '2' : 0 , '3' : 1 , '4' : 2 , '5' : 3 , '6' : 4 , '7' : 5 , '8' : 6 , '9' : 7 , '10' : 8 , 'J' : 9 , 'Q' : 10 , 'K' : 11 , 'A' : 12 ,
       '对子' : 15 , '顺子' : 30 , '顺金' : 60 , '豹子' : 100 }
count_new_list = [] # 存储玩家分数和排序后排名
count_dic = {} # 存储玩家分数
# 准备52张扑克
for hua in hua_list:
   for num in num_list:
     a = hua + num
     puke.append(a)
player_dic = { '玩家1' : [], '玩家2' : [], '玩家3' : [], '玩家4' : [], '玩家5' : []}
# 随机给五个玩家发牌
# print(len(puke))
for key, value in player_dic.items():
   for i in range ( 3 ):
     plate = random.sample(puke, 3 )
     player_dic[key] = plate
     for i in plate:
       puke.remove(i)
 
 
# print(player_dic)
 
# 获取玩家的牌型
def paixing(list1):
   num = []
   huase = []
   for i in list1:
     a = i[ 2 :]
     b = i[: 2 ]
     num.append(a)
     huase.append(b)
   return num, huase
 
 
# 对数字的牌型进行排序
def sotr(num):
   new_num = []
   sort_list2 = []
   list1 = []
   for i in num:
     new_num.append(sotr_dic[i])
   new_num = sorted (new_num)
   for new in new_num:
     sort_list2.append([k for k, v in sotr_dic.items() if v = = new])
   for m in sort_list2:
     for n in m:
       list1.append(n)
   return list1
 
 
# 对玩家的牌形统计分数
def count(num, huase):
   a = 0
   base_count = sotr_dic[num[ 0 ]] + sotr_dic[num[ 1 ]] + sotr_dic[num[ 2 ]]
   if num[ 0 ] = = num[ 1 ] and num[ 1 ] = = num[ 2 ]:
     paixing = '豹子'
     a = base_count + sotr_dic[paixing]
     # print(paixing, a)
   elif (sotr_dic[num[ 0 ]] + 1 = = sotr_dic[num[ 1 ]] and sotr_dic[num[ 2 ]] - 1 = = sotr_dic[num[ 1 ]]) and (huase[ 0 ] = = huase[
     1 ] and huase[ 1 ] = = huase[ 2 ]):
     paixing = '顺金'
     a = base_count + sotr_dic[paixing]
     # print(paixing, a)
   elif (sotr_dic[num[ 0 ]] + 1 = = sotr_dic[num[ 1 ]]) and (sotr_dic[num[ 2 ]] - 1 = = sotr_dic[num[ 1 ]]) and (
       huase[ 0 ] ! = huase[
     1 ] or huase[ 1 ] ! = huase[ 2 ]):
     paixing = '顺子'
     a = base_count + sotr_dic[paixing]
     # print(paixing, a)
   elif (num[ 0 ] = = num[ 1 ] and num[ 1 ] ! = num[ 2 ]) or (num[ 1 ] = = num[ 2 ] and num[ 0 ] ! = num[ 1 ]) or (
       num[ 0 ] = = num[ 2 ] and num[ 1 ] ! = num[ 0 ]):
     paixing = '对子'
     a = base_count + sotr_dic[paixing]
     # print(paixing, a)
   else :
     a = base_count
   return a
 
 
# 对存储玩家分数的字典进行排序
def compare(count_dic):
   d = list ( zip (count_dic.values(), count_dic.keys()))
   return sorted (d, reverse = True )
 
 
for key, value in player_dic.items():
   # print(key,value)
   num, huase = paixing(value)
   # print(num,huase)
   num = sotr(num)
   # print(num, huase)
   count1 = count(num, huase)
   # print(count1)
   count_dic[key] = count1
   print (key + "的牌为:" + str (value))
   count_new_list = compare(count_dic)
# print(count_new_list)
print ( '最终排名:' + "\t" + count_new_list[ 0 ][ 1 ] + "第一名" + "\t" + count_new_list[ 1 ][ 1 ] + "第二名" + "\t" + count_new_list[ 2 ][
   1 ] + "第三名" + "\t" + count_new_list[ 3 ][ 1 ] + "第四名" + "\t" + count_new_list[ 4 ][ 1 ] + "第五名" )

到此这篇关于python编写扎金花小程序的文章就介绍到这了,更多相关pytho扎金花小程序内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://blog.csdn.net/qq_48657881/article/details/112918817 。

最后此篇关于python编写扎金花小程序的实例代码的文章就讲到这里了,如果你想了解更多关于python编写扎金花小程序的实例代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com