Python炸金花模拟

发布日期:2022-04-09 06:21    点击次数:75

Python炸金花模拟

游戏规则:一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢。单张最大的是A,牌的大小顺序为,豹子>顺金>顺子>对子>单张
先生成一付完整的扑克牌给5个玩家随机发牌统一开牌,比大小,输出赢家是谁思路:
1.生成一副牌,然后发牌给玩家真人视讯游戏,存在一个数据结构中。计算分值时不同级别给予权重
2.计算单牌的分值,先给每张单牌加个权重,如01,1,10,然后算出总分(三张牌乘以权重后的合计)
3.计算对子的分值,单牌的分值乘以权重10,单牌的最高分乘以权重就是最小对子的分值
4.计算顺子,同花顺,豹子的分值,思路同上,权重分别100,1000,10000,权重差距要大点,拉开豹子,同花顺的分值。
5.在计算前先做一个排序功能,对发的牌做一个排序。判断对子,三张牌放到集合中,判断长度,等于2是对子,等于1是豹子;判断顺子,三张单牌排序后中间的减前面的==1同时后面的减中间的也是==1;判断同花,取出花色放到集合中,长度为1就是同花;同花顺的判断则是在顺子的判断里加入花色判断。
代码如下:
import random # 生成牌 def generate_pokes(): poke_types = ["♥", "♠", "♣", "♦"] poke_nums = [2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A"] poke_list = [] # 外层循环花色 for p_type in poke_types: count = 2 # 将牌的值定义出来,方便后面对比 # 内侧魂环点数 for p_num in poke_nums: # 牌的构造分为两部分,前面给玩家显示的,后面的值方便计算 card = [f"{p_type}{p_num}", count] count += 1 poke_list.append(card) return poke_list poke_list = generate_pokes() # 发牌 players = ["张飞", "赵云", "关羽", "黄忠", "马超", "吕布"] def issue_cards(players, poke_list): # 保存发牌结果,用字典存对应玩家的牌 player_dic = {} for p_name in players: # 随机发牌 p_cards = random.sample(poke_list, 3) # 截取列表中的3个元素 # 每发完一个人的牌,剔除 for card in p_cards: poke_list.remove(card) player_dic[p_name] = p_cards print(f"{p_name}发的牌是:\n{p_cards}") print("*"*50) return player_dic player_dic = issue_cards(players, poke_list) # 写好每种牌规则的函数 # 排序 def sortlist(A): l = len(A) # 冒泡排序 for i in range(0, l): for j in range(0, l - i - 1): if (A[j][1]) > (A[j + 1][1]): temp = A[j] A[j] = A[j + 1] A[j + 1] = temp return A # 计算单牌 def calculate_single(p_cards, score): score = 0 # 先排序 p_cards = sortlist(p_cards) # print(p_cards) # 加权重 weight = [0.1, 1, 10] count = 0 # 三张单牌按照设定的比重从小到大相乘,结果相加得到最后的分数 for card in p_cards: score += card[1] * weight[count] # print(score,card[1]) count += 1 print("计算单牌:", p_cards, score) return score # 计算对子,将单牌三张最大组和的分数拿来比重乘十作为最小对子的分数 def calculate_pair(p_cards, score): # 取出牌的第2个元素即牌的值,放进集合去重 card_val_set = {i[1] for i in p_cards} if len(card_val_set) == 2: # 长度为2是对子,为1是豹子 score *= 10 print("计算对子:", p_cards, score) return score # 计算顺子,同对子,比重为100 def calculate_straight(p_cards, score): p_cards = sortlist(p_cards) # 取出三张牌的值赋值给三个变量,作比较 card_val = [i[1] for i in p_cards] a, b, c = card_val if b - a == 1 and c - b == 1: score *= 100 print("计算顺子:", p_cards, score) return score # 计算同花,同上 def calculate_TongHua(p_cards, score): p_cards = sortlist(p_cards) # 取出三张牌的花色,放进集合去重 color_set = {i[0][0] for i in p_cards} if len(color_set) == 1: score *= 1000 print("计算同花:", p_cards, score) return score # 计算同花顺 def calculate_TongHuaShun(p_cards, score): p_cards = sortlist(p_cards) card_val = [i[1] for i in p_cards] a, b, c = card_val if b - a == 1 and c - b == 1: color_set = {i[0][0] for i in p_cards} if len(color_set) == 1: score *= 10000 print("计算同花顺:", p_cards, score) return score # 计算豹子 def calculate_BaoZi(p_cards, score): # 取出三张牌的值,放进集合去重 card_val_set = {i[1] for i in p_cards} if len(card_val_set) == 1: score *= 1000000 print("计算豹子:", p_cards, score) return score # 对比 # 将计算分值的函数对象按顺序放到列表中去,遍历列表,传入参数,一次执行判断计算。 calc_func_orders = [calculate_single, calculate_pair, calculate_straight, calculate_TongHua, calculate_TongHuaShun, calculate_BaoZi ] performance = [] # 存放所有玩家分值 for p_name, p_cards in player_dic.items(): print("-*-" * 30) print(f"开始计算玩家{p_name}的牌:") score = 0 for calc_func in calc_func_orders: score = calc_func(p_cards, score) performance.append([p_name, score]) print("-*-"*30) print("最后分值排名:") print(sortlist(performance)) print("-*-"*30) print("赢家是:", sortlist(performance)[-1]) 测试结果:
张飞发的牌是: [['♠Q', 12], ['♠5', 5], ['♥9', 9]] ************************************************** 赵云发的牌是: [['♦9', 9], ['♥Q', 12], ['♥8', 8]] ************************************************** 关羽发的牌是: [['♥A', 14], ['♥K', 13], ['♠9', 9]] ************************************************** 黄忠发的牌是: [['♦7', 7], ['♦Q', 12], ['♦8', 8]] ************************************************** 马超发的牌是: [['♠8', 8], ['♠J', 11], ['♣Q', 12]] ************************************************** 吕布发的牌是: [['♥6', 6], ['♣K', 13], ['♣9', 9]] ************************************************** -*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*- 开始计算玩家张飞的牌: 计算单牌: [['♠5', 5], ['♥9', 9], ['♠Q', 12]] 129.5 计算对子: [['♠5', 5], ['♥9', 9], ['♠Q', 12]] 129.5 计算顺子: [['♠5', 5], ['♥9', 9], ['♠Q', 12]] 129.5 计算同花: [['♠5', 5], ['♥9', 9], ['♠Q', 12]] 129.5 计算同花顺: [['♠5', 5], ['♥9', 9], ['♠Q', 12]] 129.5 计算豹子: [['♠5', 5], ['♥9', 9], ['♠Q', 12]] 129.5 -*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*- 开始计算玩家赵云的牌: 计算单牌: [['♥8', 8], ['♦9', 9], ['♥Q', 12]] 129.8 计算对子: [['♥8', 8], ['♦9', 9], ['♥Q', 12]] 129.8 计算顺子: [['♥8', 8], ['♦9', 9], ['♥Q', 12]] 129.8 计算同花: [['♥8', 8], ['♦9', 9], ['♥Q', 12]] 129.8 计算同花顺: [['♥8', 8], ['♦9', 9], ['♥Q', 12]] 129.8 计算豹子: [['♥8', 8], ['♦9', 9], ['♥Q', 12]] 129.8 -*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*- 开始计算玩家关羽的牌: 计算单牌: [['♠9', 9], ['♥K', 13], ['♥A', 14]] 153.9 计算对子: [['♠9', 9], ['♥K', 13], ['♥A', 14]] 153.9 计算顺子: [['♠9', 9], ['♥K', 13], ['♥A', 14]] 153.9 计算同花: [['♠9', 9], ['♥K', 13], ['♥A', 14]] 153.9 计算同花顺: [['♠9', 9], ['♥K', 13], ['♥A', 14]] 153.9 计算豹子: [['♠9', 9], ['♥K', 13], ['♥A', 14]] 153.9 -*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*- 开始计算玩家黄忠的牌: 计算单牌: [['♦7', 7], ['♦8', 8], ['♦Q', 12]] 128.7 计算对子: [['♦7', 7], ['♦8', 8], ['♦Q', 12]] 128.7 计算顺子: [['♦7', 7], ['♦8', 8], ['♦Q', 12]] 128.7 计算同花: [['♦7', 7], ['♦8', 8], ['♦Q', 12]] 128699.99999999999 计算同花顺: [['♦7', 7], ['♦8', 8], ['♦Q', 12]] 128699.99999999999 计算豹子: [['♦7', 7], ['♦8', 8], ['♦Q', 12]] 128699.99999999999 -*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*- 开始计算玩家马超的牌: 计算单牌: [['♠8', 8], ['♠J', 11], ['♣Q', 12]] 131.8 计算对子: [['♠8', 8], ['♠J', 11], ['♣Q', 12]] 131.8 计算顺子: [['♠8', 8], ['♠J', 11], ['♣Q', 12]] 131.8 计算同花: [['♠8', 8], ['♠J', 11], ['♣Q', 12]] 131.8 计算同花顺: [['♠8', 8], ['♠J', 11], ['♣Q', 12]] 131.8 计算豹子: [['♠8', 8], ['♠J', 11], ['♣Q', 12]] 131.8 -*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*- 开始计算玩家吕布的牌: 计算单牌: [['♥6', 6], ['♣9', 9], ['♣K', 13]] 139.6 计算对子: [['♥6', 6], ['♣9', 9], ['♣K', 13]] 139.6 计算顺子: [['♥6', 6], ['♣9', 9], ['♣K', 13]] 139.6 计算同花: [['♥6', 6], ['♣9', 9], ['♣K', 13]] 139.6 计算同花顺: [['♥6', 6], ['♣9', 9], ['♣K', 13]] 139.6 计算豹子: [['♥6', 6], ['♣9', 9], ['♣K', 13]] 139.6 -*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*- 最后分值排名: [['张飞', 129.5], ['赵云', 129.8], ['马超', 131.8], ['吕布', 139.6], ['关羽', 153.9], ['黄忠', 128699.99999999999]] -*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*- 赢家是: ['黄忠', 128699.99999999999]



Powered by 真人视讯游戏 @2013-2022 RSS地图 HTML地图

网站统计——

  • 谷歌搜索留痕推广
  • 谷歌搜索留痕排名技术
  • 谷歌快速排名
  • 留痕方法
  • 谷歌搜索快速方法
  • google搜索留痕程序
  • 谷歌快速排名
  • 澳门太阳城
  • 最大博彩公司
  • 谷歌搜索关键词排名
  • 搜索留痕程序
  • 谷歌排名出售
  • 谷歌蜘蛛池排名
  • 搜索留痕软件
  • 缅甸果敢赌场
  • 电子游艺规则
  • 谷歌留痕推广
  • google引流程序
  • 谷歌快速排名
  • google引流程序
  • 留痕推广
  • 大西洋城赌场
  • 买球地址
  • 搜索留痕
  • 搜索留痕程序出售
  • 谷歌蜘蛛池排名技术
  • 留痕程序
  • 如何提高google搜索排名
  • 数字币博彩
  • 洗钱方法
  • Google留痕收录
  • 最新谷歌搜索留痕排名
  • 搜索留痕
  • Google留痕收录
  • google搜索留痕
  • 数字币博彩网站
  • 足球投注平台
  • 博彩推广话术
  • 推广引流方法
  • 引流方法
  • 博彩推广话术
  • 网上博彩推广引流
  • 数字币赌场
  • 皇冠现金网
  • 蜘蛛池排名
  • 谷歌蜘蛛池
  • 留痕程序出售
  • google搜索留痕程序
  • 比特币网上赌场
  • 洗钱平台
  • 搜索留痕
  • 博彩推广方式
  • 网上博彩推广
  • 快速排名
  • 搜索留痕程序
  • bbin平台大全
  • 体育博彩公司排名
  • 留痕排名技术
  • 最新谷歌关键词排名
  • 推广渠道
  • 谷歌快速排名
  • 博彩推广
  • 世界杯赌球地址
  • 皇冠博彩公司
  • 谷歌排名出售
  • 博彩引流渠道
  • 搜索留痕程序
  • google搜索留痕
  • 引流渠道
  • 果敢网上赌场
  • 世界杯赌球
  • 搜索留痕方法
  • 博彩搜索留痕
  • 博彩引流
  • 博彩引流
  • 搜索留痕
  • 缅甸网上赌场
  • 欧洲杯赌球
  • 谷歌搜索排名
  • 留痕程序
  • 网上博彩推广引流
  • 留痕技术
  • 搜索留痕技术出售
  • 澳门威尼斯人网上赌场
  • 外围博彩
  • 博彩网站推广
  • 推广引流
  • 留痕程序出售
  • 谷歌推广引流技术
  • 推广引流方法
  • 美国在线赌场
  • 沙巴体育投注平台
  • 最新谷歌搜索留痕
  • 谷歌蜘蛛池排名技术
  • 网站推广方法
  • 留痕程序出售
  • 博彩推广方法
  • 菠菜论坛
  • 买球平台
  • 谷歌搜索留痕
  • 蜘蛛池排名
  • 博彩公司推广渠道
  • 谷歌搜索留痕
  • 博彩公司推广渠道
  • 真钱游戏
  • 网上赌球地址
  • 赌球平台推荐
  • 赌球网址
  • 博彩包网
  • 买球app
  • 澳门博彩公司
  • 威尼斯人赌场
  • 博彩平台推荐
  • 美国博彩网站
  • 缅甸实体赌场
  • 柬埔寨网上赌场
  • 柬埔寨在线赌场
  • 韩国博彩
  • 支持人民币的博彩公司
  • 世界五大比特币交易所
  • 欧易是哪个国家的
  • 中币跑路
  • 亚洲博彩公司
  • 合法网上赌场
  • 马尼拉赌场
  • 支持人民币的博彩公司
  • 大陆博彩平台
  • 澳门新葡京娱乐城
  • 老挝赌场
  • 世界赌场排名
  • 网上博彩公司排行
  • 菠菜论坛
  • 东南亚赌博网站
  • 虚拟币博彩
  • 澳门百家乐网址
  • 网上博彩导航
  • 区块链百家乐游戏
  • 马来西亚博彩公司
  • 越南赌场
  • 区块链百家乐
  • 香港娱乐场
  • 澳大利亚赌博网站
  • 足球赔率
  • 菲律宾网上赌场
  • 数字币博彩网站
  • 足球投注网站
  • 百家乐论坛
  • 皇冠体育博彩公司
  • 网上赌博网站
  • 网上博彩推广话术
  • 谷歌搜索快速方法
  • 网上博彩推广话术
  • 数字币赌场
  • 皇冠博彩公司
  • 世界杯博彩公司
  • 英国博彩公司
  • 网上博彩合法化
  • 新加坡赌场
  • 比特币网上赌场
  • 怎么洗钱
  • 加密货币博彩平台
  • 世界杯赌球网址
  • 网上赌球地址
  • 博彩推广方式
  • 印度尼西亚博彩公司
  • 国际包网
  • bbin平台直营
  • 亚洲体育博彩平台
  • 越南博彩公司
  • 百家乐路单
  • 澳门博彩官网
  • 博彩网推荐
  • 澳门太阳城网址
  • 百家乐网址
  • 世界杯赌球网址
  • 皇冠博彩网址
  • 洗钱方法
  • 买球网站
  • 欧洲杯赌球平台
  • 皇冠现金网
  • 外围赌球平台
  • 果敢赌场
  • 买球技巧
  • 全球最大博彩公司
  • 电子游艺
  • 真人电子游戏
  • 骰宝游戏规则
  • 亚洲体育博彩平台
  • 澳门在线赌场
  • 缅甸赌场地址
  • 赌球平台
  • 赌场如何赢钱
  • 世界杯买球网站
  • 真人牌九游戏
  • 世界杯买球官网
  • 时时彩平台
  • 六合彩预测
  • 威尼斯人网上赌场
  • 外围赌球网站
  • 赌博网址
  • 彩票群
  • 微信赌博群
  • 韩国首尔赌场
  • 赌钱游戏
  • 美国网上赌场
  • bbin官网
  • 沙巴体育官网
  • 博彩平台推荐
  • 数字币博彩网站
  • 比特币网上赌场
  • 世界赌场名单
  • 美国赌场攻略
  • 菠菜论坛排名
  • 菠菜论坛排名
  • 缅甸网上赌场
  • 支持人民币的博彩公司