python编写扎金花小程序的实例代码
游戏规则:
一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢。
有以下几种牌:
豹子:三张一样的牌,如3张6.
顺金:又称同花顺,即3张同样花色的顺子, 如红桃 5、6、7
顺子:又称拖拉机,花色不同,但是顺子,如红桃5、方片6、黑桃7,组成的顺子
对子:2张牌一样
单张:单张最大的是A
这几种牌的大小顺序为, 豹子>顺金>顺子>对子>单张
程序需要实现的点:
- 先生成一付完整的扑克牌
- 给5个玩家随机发牌
- 统一开牌,比大小,输出赢家是谁
主要思路:
把各种牌用积分来计算,最后加上三张牌的基础积分。即:最终积分=基础积分+牌型积分。最后比较最红积分,谁的积分大,谁排名就靠前。 附上源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | # -*- coding: utf-8 -*- """ # @Time : 2021-01-07 14:55 # @author : jianwei # @Software : PyCharm """ import random import operator 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张扑克 for hua in hua_list: for num in num_list: a = hua + num puke.append(a) player_dic = { '玩家1' : [], '玩家2' : [], '玩家3' : [], '玩家4' : [], '玩家5' : []} # 随机给五个玩家发牌 # print(len(puke)) for key, value in player_dic.items(): for i in range ( 3 ): plate = random.sample(puke, 3 ) player_dic[key] = plate for i in plate: puke.remove(i) # print(player_dic) # 获取玩家的牌型 def paixing(list1): num = [] huase = [] for i in list1: a = i[ 2 :] b = i[: 2 ] num.append(a) huase.append(b) return num, huase # 对数字的牌型进行排序 def sotr(num): new_num = [] sort_list2 = [] list1 = [] for i in num: new_num.append(sotr_dic[i]) new_num = sorted (new_num) for new in new_num: sort_list2.append([k for k, v in sotr_dic.items() if v = = new]) for m in sort_list2: for n in m: list1.append(n) return list1 # 对玩家的牌形统计分数 def count(num, huase): a = 0 base_count = sotr_dic[num[ 0 ]] + sotr_dic[num[ 1 ]] + sotr_dic[num[ 2 ]] if num[ 0 ] = = num[ 1 ] and num[ 1 ] = = num[ 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 ] and huase[ 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 ] or huase[ 1 ] ! = huase[ 2 ]): paixing = '顺子' a = base_count + sotr_dic[paixing] # print(paixing, a) elif (num[ 0 ] = = num[ 1 ] and num[ 1 ] ! = num[ 2 ]) or (num[ 1 ] = = num[ 2 ] and num[ 0 ] ! = num[ 1 ]) or ( num[ 0 ] = = num[ 2 ] and num[ 1 ] ! = num[ 0 ]): paixing = '对子' a = base_count + sotr_dic[paixing] # print(paixing, a) else : a = base_count return a # 对存储玩家分数的字典进行排序 def compare(count_dic): d = list ( zip (count_dic.values(), count_dic.keys())) return sorted (d, reverse = True ) for key, value in player_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扎金花小程序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
python基于BeautifulSoup实现抓取网页指定内容的方法
这篇文章主要介绍了python基于BeautifulSoup实现抓取网页指定内容的方法,涉及Python使用BeautifulSoup模块解析html网页的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下2015-07-07
最新评论