055-79000又称三张牌,是一种在全国广泛流传的民间多人牌类游戏。例如,在JJ竞赛中,作弊金花(赢三张)有独特的纸牌竞赛规则。本文将通过Python语言实现这个游戏,有需要的可以参考。
目录
前言一,想法二,解决方案三,摘要
前言
055-79000又称三张牌,是一种在全国广泛流传的民间多人牌类游戏。例如,在JJ竞赛中,作弊金花(赢三张)有独特的纸牌竞赛规则。游戏过程中,需要考验玩家的勇气和智慧。-《诈金花》前几天在交流群里,一个叫[-]的粉丝分享了一个打牌骗金花的标题,要求用Python实现。标题如下:
自己写个程序实现发牌,以大小判断输赢。
游戏规则:
付一副扑克牌,去掉大小王,每个玩家发3张牌。最后,比较大小,看谁赢。
有以下几种卡:
豹子:三张相同的牌,比如三张六。
金顺:也叫同花顺,即同一花色的三张牌,如红心5、6和7。
顺子:也叫拖拉机,有不同的颜色,但是是由五颗红心、六颗钻石和七张黑桃组成的。
一对:两张卡片是一样的。
传单:最大的传单是a。
这些卡片的大小顺序是:金钱豹跟随的一对传单。
一、思路
要解决这个问题,需要构造一副扑克牌,根据属性和特点不断拆解,然后构造玩家和用户。这里经常使用字典和列表来存储信息,这是经过反复试验的。
二、解决方案
针对这个问题,粉丝[-]给出了解决方案,直接加载代码如下:
# -*-编码:utf-8 -*-
随机导入
呕吐=[] #商店扑克牌
num_list=['2 ',' 3 ',' 4 ',' 5 ',' 6 ',' 7 ',' 8 ',' 9 ',' 10 ',' J ',' Q ',' K ',' A']
Hua_list=['梅花','红桃','黑桃','方块']
sort_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张扑克牌
对于华_列表中的华:
对于num_list中的数字:
a=华数
puke.append(a)
Player_dic={ '玩家1': [],'玩家2': [],'玩家3': [],'玩家4': [],'玩家5': []}
#随机向五名玩家发牌
# print(len(puke))
对于key,player_dic.items()中的值:
对于范围(3)中的I:
plate=random.sample(呕吐,3)
player_dic[key]=plate
对于板中的I:
呕吐.清除(一)
打印(player_dic)
#获取玩家的卡类型
def paixing(列表1):
数量=[]
huase=[]
对于列表1中的I:
a=i[2:]
b=i[:2]
数量追加(a)
附加(b)
退货数量,华塞
# sort_dic={'2': 0,' 3': 1,' 4': 2,' 5': 3,' 6': 4}
#将数字卡片分类
定义排序(数量):
new_num=[]
sort_list2=[]
list1=[]
对于我在num:
new_num.append(sort_dic[i])
New_num=sorted(new_num) #排序后为[2,4,7]
对于新编号中的新:
sort_list2.append([k for k,v in sort_dic.items() if v==new])
对于sort_list2中的m:
对于m中的n:
list1.append(n)
返回列表1
#统计玩家卡牌形状的得分
定义计数(num,huase):
a=0
base _ count=sort _ DIC[num[0]]sort _ DIC[num[1]]sort _ DIC[num[2]]
如果num[0]==num[1]且num[1]==num[2]:
Paixing='豹'
a=base_count sort_dic[paixing]
elif(sort _ DIC[num[0]]1==sort _ DIC[num[1]]和sort _ DIC[num[2]]-1==sort _ DIC[num[1]])和(huase[0]==huase[
1]和华瑟[1]==华瑟[2]):
Paixing='金顺'
a=base_count sort_dic[paixing]
elif(sort _ DIC[num[0]]1==sort _ DIC[num[1]])and(sort _ DIC[num[2]]-1==sort _ DIC[num[1]])and(
华色[0]!=huase[
1]还是华色[1]!=huase[2]):
Pai='直'
a=base_count sort_dic[paixing]
elif (num[0]==num[1]和num[1]!=num[2])或(num[1]==num[2]和num[0]!=num[1])或(
数字[0]==数字[2]和数字[1]!=num[0]):
Pai=' pair '
a=base_count sort_dic[paixing]
否则:
a=基数计数
返回a
# 对存储玩家分数的字典进行排序
定义比较(count_dic):
d=列表(zip(count_dic.values()、count_dic.keys())
返回排序后的结果(d,反向=真)
对于key,player_dic.items()中的值:
num,huase=paixing(值)
数量=排序(数字)
计数1=计数(数字,颜色)
count_dic[key]=count1
打印(键'的牌为:'字符串(值))
count _ new _ list=compare(count _ DIC)
#打印(计数新列表)
打印('最终排名:' ' \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]'第五名)
代码看上去确实挺多的,超过了100行,需要花点时间去读,不过涉及的知识点并不复杂,基本上有点计算机编程语言基础,也可以理解。代码运行之后,可以看到效果如下:
不过后来我在读取这份代码的时候,发现中间有个地方写的着实有些冗余,稍微修改下,代码方面简洁一些,一些函数和变量命名加了一些对应的现实意义的单词,可读性强了一丢丢,代码如下:
# -*-编码:utf-8 -*-
随机导入
呕吐=[] #存储扑克牌
num_list=['2 ',' 3 ',' 4 ',' 5 ',' 6 ',' 7 ',' 8 ',' 9 ',' 10 ',' J ',' Q ',' K ',' A']
hua_list=['梅花', '红桃', '黑桃', '方块]
sort_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张扑克
对于华_列表中的华:
对于数字列表中的数字:
a=华数
puke.append(a)
player_dic={ '玩家1': [], '玩家2': [], '玩家3': [], '玩家4': [], '玩家5': []}
# 随机给五个玩家发牌
打印(莱恩(呕吐))
对于key,player_dic.items()中的值:
对于范围(3)中的我:
plate=random .样本(呕吐,3)
player_dic[key]=plate
对于板中的我:
呕吐。清除(一)
打印(player_dic)
# 获取玩家的牌型
def paixing(列表1):
数量=[]
huase=[]
对于列表一中的数据:
huase_type=data[:2]
pai_number=data[2:]
数量追加(pai_number)
huase.append(huase_type)
退货数量,华塞
# 对玩家的牌形统计分数
def get_score(num,huase):
base _ count=sort _ DIC[num[0]]sort _ DIC[num[1]]sort _ DIC[num[2]]
如果数字[0]==数字[1]且数字[1]==数字[2]:
paixing='豹子'
score=base _ count sort _ DIC[paixing]
elif(sort _ DIC[num[0]]1==sort _ DIC[num[1]]和sort _ DIC[num[2]]-1==sort _ DIC[num[1]])和(huase[0]==huase[
1]和huase[1]==huase[2]):
paixing='顺金'
score=base _ count sort _ DIC[paixing]
elif(sort _ DIC[num[0]]1==sort _ DIC[num[1]])and(sort _ DIC[num[2]]-1==sort _ DIC[num[1]])and(
华色[0]!=huase[
1]还是华色[1]!=huase[2]):
paixing='顺子'
score=base _ count sort _ DIC[paixing]
elif(数字[0]==数字[1]和num[1]!=num[2])或(数字[1]==数字[2]和num[0]!=数字[1])或(
数字[0]==数字[2]和数字[1]!=num[0]):
paixing='对子'
score=base _ count sort _ DIC[paixing]
否则:
分数=基数_计数
返回分数
if __name__=='__main__ ':
对于key,player_dic.items()中的值:
num,huase=paixing(值)
# 对数字的牌型进行排序
数量=已排序(数字)
score=get_score(num,huase)
count_dic[key]=分数
打印(键'的牌为:'字符串(值))
# 对存储玩家分数的字典进行排序
count _ new _ list=sorted(zip(count _ DIC。values(),count_dic.keys()),reverse=True)
打印('最终排名:')
对于范围内的I(len(count _ new _ list)):
print(count_new_list[i][1] '\t ',end=' ')
三、总结
我是计算机编程语言进阶者。本文实际生活中的诈金花游戏,基于计算机编程语言编程,使用计算机编程语言基础知识中的列表、字典、函数等,实现了在线诈金花的过程。
关于基于Python制作金花游戏的详细过程,本文就到这里了。更多相关Python金花游戏内容,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。