python编写扎金花小程序的实例代码
游戏规则:
一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢。
有以下几种牌:
豹子:三张一样的牌,如3张6.
顺金:又称同花顺,即3张同样花色的顺子,如红桃5、6、7
顺子:又称拖拉机,花色不同,但是顺子,如红桃5、方片6、黑桃7,组成的顺子
对子:2张牌一样
单张:单张最大的是A
这几种牌的大小顺序为,豹子>顺金>顺子>对子>单张
程序需要实现的点:
- 先生成一付完整的扑克牌
- 给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编写扎金花小程序的文章就介绍到这了,更多相关pytho扎金花小程序内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。