使用python怎么编写一个扎金花小程序
本篇文章为大家展示了使用python怎么编写一个扎金花小程序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
程序需要实现的点:
先生成一付完整的扑克牌
给5个玩家随机发牌
统一开牌,比大小,输出赢家是谁
主要思路:
把各种牌用积分来计算,最后加上三张牌的基础积分。即:最终积分=基础积分+牌型积分。最后比较最红积分,谁的积分大,谁排名就靠前。 附上源码:
#-*-coding:utf-8-*-
"""
#@Time:2021-01-0714:55
#@author:jianwei
#@Software:PyCharm
"""
importrandom
importoperator
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张扑克
forhuainhua_list:
fornuminnum_list:
a=hua+num
puke.append(a)
player_dic={'玩家1':[],'玩家2':[],'玩家3':[],'玩家4':[],'玩家5':[]}
#随机给五个玩家发牌
#print(len(puke))
forkey,valueinplayer_dic.items():
foriinrange(3):
plate=random.sample(puke,3)
player_dic[key]=plate
foriinplate:
puke.remove(i)
#print(player_dic)
#获取玩家的牌型
defpaixing(list1):
num=[]
huase=[]
foriinlist1:
a=i[2:]
b=i[:2]
num.append(a)
huase.append(b)
returnnum,huase
#对数字的牌型进行排序
defsotr(num):
new_num=[]
sort_list2=[]
list1=[]
foriinnum:
new_num.append(sotr_dic[i])
new_num=sorted(new_num)
fornewinnew_num:
sort_list2.append([kfork,vinsotr_dic.items()ifv==new])
forminsort_list2:
forninm:
list1.append(n)
returnlist1
#对玩家的牌形统计分数
defcount(num,huase):
a=0
base_count=sotr_dic[num[0]]+sotr_dic[num[1]]+sotr_dic[num[2]]
ifnum[0]==num[1]andnum[1]==num[2]:
paixing='豹子'
a=base_count+sotr_dic[paixing]
#print(paixing,a)
elif(sotr_dic[num[0]]+1==sotr_dic[num[1]]andsotr_dic[num[2]]-1==sotr_dic[num[1]])and(huase[0]==huase[
1]andhuase[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]orhuase[1]!=huase[2]):
paixing='顺子'
a=base_count+sotr_dic[paixing]
#print(paixing,a)
elif(num[0]==num[1]andnum[1]!=num[2])or(num[1]==num[2]andnum[0]!=num[1])or(
num[0]==num[2]andnum[1]!=num[0]):
paixing='对子'
a=base_count+sotr_dic[paixing]
#print(paixing,a)
else:
a=base_count
returna
#对存储玩家分数的字典进行排序
defcompare(count_dic):
d=list(zip(count_dic.values(),count_dic.keys()))
returnsorted(d,reverse=True)
forkey,valueinplayer_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怎么编写一个扎金花小程序,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注恰卡编程网行业资讯频道。
推荐阅读
-
一文教你Python如何快速精准抓取网页数据
本文将使用requests和beautifulsoup这两个流行的库来实现。1.准备工作首先安装必要的库:pipinst...
-
使用Python实现IP地址和端口状态检测与监控
-
基于Python打造一个智能单词管理神器
-
Python实现微信自动锁定工具
-
使用Python创建一个功能完整的Windows风格计算器程序
python实现windows系统计算器程序(含高级功能)下面我将介绍如何使用python创建一个功能完整的windows风格计...
-
Python开发文字版随机事件游戏的项目实例
随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型。在这类游戏中,玩家必须应对随机发生的情况,这些情况可能会影响他们的资...
-
使用Pandas实现Excel中的数据透视表的项目实践
引言在数据分析中,数据透视表是一种非常强大的工具,它可以帮助我们快速汇总、分析和可视化大量数据。虽然excel提供了内置的数据透...
-
Pandas利用主表更新子表指定列小技巧
一、前言工作的小技巧,利用pandas读取主表和子表,利用主表的指定列,更新子表的指定列。案例:主表:uidname0...
-
Pandas中统计汇总可视化函数plot()的使用
-
Python中tensorflow的argmax()函数的使用小结
在tensorflow中,argmax()函数是一个非常重要的操作,它用于返回给定张量(tensor)沿指定轴的最大值的索引。这个...
