使用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多线程抓取代理服务器
Python作为一门功能强大的脚本语言来说,经常被用来写爬虫程序,下面是Python爬虫多线程抓取代理服务器。年前是用//lin...
-
Python中怎么动态声明变量赋值
这篇文章将为大家详细讲解有关Python中怎么动态声明变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中变量的存储原理是什么
本篇文章给大家分享的是有关python中变量的存储原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有...
-
Python中怎么引用传递变量赋值
这篇文章将为大家详细讲解有关Python中怎么引用传递变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中怎么获取程序执行文件路径
python中怎么获取程序执行文件路径,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的...
-
Python中如何获取文件系统的使用率
Python中如何获取文件系统的使用率,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴...
-
Python中怎么获取文件的创建和修改时间
这篇文章将为大家详细讲解有关Python中怎么获取文件的创建和修改时间,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读...
-
python中怎么获取依赖包
今天就跟大家聊聊有关python中怎么获取依赖包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据...
-
python怎么实现批量文件加密功能
这篇文章主要介绍“python怎么实现批量文件加密功能”,在日常操作中,相信很多人在python怎么实现批量文件加密功能问题上存在...
-
python中怎么实现threading线程同步
小编给大家分享一下python中怎么实现threading线程同步,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!...