游戏的规则:

一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢。


牌型:

豹子:三张一样的牌,如3张6,分值100

顺金:又称同花顺,即3张同样花色的顺子, 如红桃 5、6、7,分值75

顺子:又称拖拉机,花色不同,但是顺子,如红桃5、方片6、黑桃7,组成的顺子,分值50

对子:2张牌一样,分值25

单张:单张最大的是A,分值依次为2,3,4,...,12,13,14


程序的功能:

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

2. 给5个玩家随机发牌

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


思路:

用一个list存储所有的牌和其对应的单张牌的分值,效果如下:

 用一个list存储五个玩家,效果如下:

  用一个dict存储每个玩家的姓名和拿到的牌,效果如下:

最后根据每个玩家手中的牌来进行评分,分数最高者即为胜利者,话不多说,源码如下: 

# 引入包
import random# 生成一副牌
def generate_puke():decor = ['黑桃', '红心', '梅花', '方块']  # 花色number = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]  # 数字,J Q K A 分别用11 12 13 14代替puke = []for i in decor:for j in number:hua = iif j == 11:num = 'J'elif j == 12:num = 'Q'elif j == 13:num = 'K'elif j == 14:num = 'A'else:num = str(j)# 以列表的形式,第一个是牌的花色和值,第二个是对应的单张牌的大小puke.append([hua+num, j])return puke# 炸金花游戏
def fgf():# 引入一副牌puke = generate_puke()# 随机给五个玩家发牌player = ['P1', 'P2', 'P3', 'P4', 'P5']p_puke = {}  # 字典(玩家,一副牌)puke_copy = puke.copy()  # 生成一副牌的副本plate = random.sample(puke_copy, 15)  # 拿出十五张牌for i, j in zip(player, range(len(player))):  # 给五个玩家随机发牌p = plate[j*3:(j+1)*3]p_puke.setdefault(i, p)print('****************发牌中****************')# 设置一个积分器# 基础分等于单张的值# 牌型 豹子、顺金、顺子、对子 分数分别为 100,75,50,25integral = []for i in player:# 获取三张牌one = p_puke[i][0][1]two = p_puke[i][1][1]three = p_puke[i][2][1]num_set = {one, two, three}color1 = p_puke[i][0][0][:2]color2 = p_puke[i][1][0][:2]color3 = p_puke[i][2][0][:2]base_score = one + two + threeif len(num_set) == 1:card_type_score = 100elif len(num_set) == 3 and max(abs(one-two), abs(one-three), abs(two-three)) == 2 or {2, 3, 14} == num_set:if color1 == color2 == color3:card_type_score = 75  # 顺金else:card_type_score = 50  # 顺子elif len(num_set) == 2:card_type_score = 25else:card_type_score = 0score = base_score + card_type_scoreintegral.append([i, score])# 开牌print('               ·······               ')print('****************开牌中****************')for i, j in zip(p_puke.items(), integral):print('玩家名: ', i[0])print('持牌:  ', end='')print(i[1][0][0], i[1][1][0], i[1][2][0], sep='  ', end='')print('   得分: ', j[1])# 判断胜利者winner = 'P1'winner_score = integral[0][1]for i in integral:if i[1] > winner_score:winner = i[0]winner_score = i[1]print('**************结果计算中**************')print('玩家', winner, '胜利\n他的持牌是:', p_puke[winner][0][0], p_puke[winner][1][0], p_puke[winner][2][0])print('*************本局游戏结束**************')if __name__ == '__main__':fgf()

入门必备小游戏之炸金花相关推荐

  1. html制作炸金花,微信小程序怎么制作炸金花?微信小程序制作炸金花的方法

    很多朋友喜欢玩炸金花游戏,那么怎么在微信小程序上制作炸金花呢?下面就是小编带来的完整详细的教程,想要学习的小伙伴就赶紧看过来吧. 微信小程序怎么制作炸金花?微信小程序制作炸金花的方法 app.json ...

  2. 炸金花游戏(4)--炸金花AI基准测试评估

    前言: 本文将谈谈如何评估测试炸金花的AI, 其实这个也代表一类的问题, 德州扑克也是类似的解法. 本文将谈谈两种思路, 一种是基于基准AI对抗评估, 另一种是基于测试集(人工选定牌谱). 由于炸金花 ...

  3. 炸金花游戏(1)--炸金花游戏的模型设计和牌力评估

    前言: 好久没写博客了, 今天来补上一篇, 是关于炸金花游戏模型的设计和牌力评估. 其核心思想和之前谈到过的德州模型很像, 本文也想为炸金花游戏这个系列开个头, 希望后面能写写AI相关的文章. 相关文 ...

  4. 炸金花游戏(2)--炸金花游戏的胜率预估

    前言: 我也是突然心血来潮, 想写写炸金花这类游戏的AI实现. 本文算是这一系列的第二篇, 主要写炸金花的胜率预估, 主要基于蒙特卡罗的思想, 胜率是炸金花AI的核心决策数据, ^_^. 相关文章: ...

  5. 【新手上路】Java必备小游戏——Flappy Bird(飞翔的小鸟)

    <飞翔的小鸟>是一款曾经比较火热的小游戏,本文可以带你你从零开始,一步一步的开发出这款小游戏.如果你只是刚入门java的新手,不用担心,只要你简单掌握了该游戏所需要的javase基础知识, ...

  6. Java入门简单小游戏有哪些?

    适合新手练习的小游戏有超级玛丽.愤怒的小鸟.飞机大战.五子棋.彩虹雨.聊天室.华容道.坦克大战.扫雷等.还有贪吃蛇,由Java开发出来的一款经典小游戏,java小白入门可以用这款游戏开发练手锻炼自己的 ...

  7. android游戏编程之从零开始_纯C语言程序员写的编程新手入门基础小游戏之最炫酷推箱子...

    很多编程爱好者都编写过推箱子游戏编程吧,最近有好些朋友看见我以前的推箱子程序后, 问我是怎么做的.我一直想把这个程序的整个过程写一份详细的东西,与各位编程爱好者分享,一直没空.正好现在放假了,而且离回 ...

  8. 零基础如何快速入门微信小游戏开发?

    随着微信生态中,小程序应用指数级的增长,许多休闲游戏变成为了众多游戏厂商流量变现的新手段.以近期很火的"羊了个羊"为例,它便是我们常常所说的小游戏. 游戏和小游戏的区别 要盘点小游 ...

  9. CocosCreator之KUOKUO带你入门3D小游戏-躲避方块

    本次引擎2.1.0 编辑工具VSCode 目标:3D小游戏躲避方块 2.1.0版本已经出来好几天了,虽然有些地方还不够完善, 但是毕竟是能写3D游戏了,简单的来写一个,嘻嘻. console.log( ...

  10. 干货 | 敏捷培训必备小游戏,都在这里了!

    全世界只有不到 1% 的人会朝着自己的梦想行动 你真是个特别的人 敏捷 背后是勇敢实践的心 他们在五湖四海,也在你身边,他们正在实践敏捷. 在组织进行敏捷导入前,最好先以敏捷培训引入敏捷理念.而枯燥的 ...

最新文章

  1. ASP.NET MVC过滤器(一)
  2. HTTP1.0,HTTP1.1,HTTPS和HTTP2.0的区别
  3. 一个Web OS - Windows4All
  4. css3 渐变色 3种,css3实现渐变色文字的三种方法
  5. 里面如何配置库_【专享】SolidWorks管道库国标模型下载SolidWorks Routing管道设计学习必备...
  6. IOS登陆+注册+抽奖+排行榜
  7. 如何知道osg模型每个节点的名称
  8. GOOGLE搜索出来的你的网站说明是乱码的
  9. 飞鸽传书最新源码类都要复杂的多
  10. linux shell $#获取所有参数的个数 $@获取所有参数
  11. 计算机组装维护教学总结,计算机组装与维护教学总结.doc
  12. angular-busy用法
  13. 《我的世界》Minecraft私服搭建100%成功
  14. 使用跨端解决方案Rax编写鸿蒙应用
  15. 用python创建微信机器人_手把手教你用Python创建微信机器人
  16. 经常失眠怎么办?这些方法和好物可以帮到你
  17. 批处理系统脱机使用计算机,1.2.2 脱机输入/输出和批处理系统
  18. 分治法求解最小和第二小元素
  19. bway ESL电竞联赛十六季C组对战前瞻 三组战队情报分析
  20. SpringAnimation详解

热门文章

  1. 遗传算法优化BP神经网络,bp神经网络的优化算法
  2. 解决fatal: unable to connect to github.com
  3. 什么是数据库的实体关系图(ERD)?
  4. 【Unity3D开发小游戏】《愤怒的小鸟》Unity开发教程
  5. Unity3d之AR小游戏
  6. Flink SQL Client初探
  7. 面对危机,中国也不应修修补补
  8. Django之全局配置-ALLOWED_HOSTS、LOGGING及多个子应用管理
  9. RocketMQ-单条消息大小上限
  10. scp 给ipv6_scp传输常用命令