使用python怎么编写一个扎金花小程序

本篇文章为大家展示了使用python怎么编写一个扎金花小程序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

程序需要实现的点:

  1. 先生成一付完整的扑克牌

    使用python怎么编写一个扎金花小程序

  2. 给5个玩家随机发牌

  3. 统一开牌,比大小,输出赢家是谁

主要思路:

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

#-*-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怎么编写一个扎金花小程序,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注恰卡编程网行业资讯频道。

发布于 2021-02-24 07:35:10
收藏
分享
海报
0 条评论
162
上一篇:如何在Python项目中利用Django框架实现一个支付宝付款功能 下一篇:怎么在Android项目中实现一个倒计时结束后跳转页面功能
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码