大家好,本篇文章主要讲的是Python扑克牌21点游戏实例代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

废话还是说太多了 直接上代码

|

`import` `random``import` `sys``# 牌面列表``card_code` `=` `[``'A'``,` `'2'``,` `'3'``,` `'4'``,` `'5'``,` `'6'``,` `'7'``,` `'8'``,` `'9'``,` `'10'``,` `'J'``,` `'Q'``,` `'K'``]``# 花色列表``card_symbol` `=` `[``'♦'``,` `'♣'``,` `'♥'``,` `'♠'``]``# 游戏初始化``def` `init(player_count):``# 根据玩家数来生成玩家记牌器``player_group` `=` `[[]` `for` `_` `in` `range``(player_count)]``# 根据玩家数来生成玩家是否要牌``player_isWant` `=` `[``True` `for` `_` `in` `range``(player_count)]``# 生成元素1~52的列表 (去掉大小鬼的扑克牌[52张])``poker` `=` `list``(``range``(``1``,` `53``))``# 用random的shuffle函数对列表打乱顺序 (洗牌)``random.shuffle(poker)``# 返回玩家组 玩家是否要牌 乱序52张扑克``return` `player_group, player_isWant, poker``# 打印玩家点数``def` `print_player_point(player_group):``# 存放玩家点数``player_point` `=` `[]``# 遍历每一位玩家``for` `index` `in` `range``(``len``(player_group)):``# 打印每位玩家的牌和点数``print``(``"-------玩家"``+``str``(index``+``1``)``+``"------"``)``# 初始化玩家点数 如果含有牌A 因为A可视为1点或11点 则有两种点数``current_player` `=` `[``0``,` `0``]``# 遍历每位玩家的手牌``for` `card` `in` `player_group[index]:``"""``核心代码``由于牌面的数字是从1到52 所以牌面要先减1再求余才是牌面列表真正的下标``若玩家抽到牌为15 即牌面为15 - 13 = 2 且按花色顺序为♣ 即2♣``牌面 15 - 1 = 14 再 14 % 13 = 1 这个就是对应牌面列表的第二位元素 即2``花色 15 - 1 = 14 再 14 / 13 = 1 对应花色列表第二位元素 即♣``"""``# 获取牌面和花色下标``code_index` `=` `int``((card` `-` `1``)` `%` `13``)``symbol_index` `=` `int``((card` `-` `1``)` `/` `13``)``# 打印玩家牌信息``print``(card_code[code_index]` `+` `card_symbol[symbol_index], end``=``"\t"``)``# 如果牌面含有A 则添加不同点数1和11``if` `(code_index` `+` `1``)` `=``=` `1``:``current_player[``0``]` `+``=` `1``current_player[``1``]` `+``=` `11``# 如果牌面不含A 则添加相同点数``else``:``current_player[``0``]` `+``=` `code_index` `+` `1``current_player[``1``]` `+``=` `code_index` `+` `1``# 如果两个点数一致 则打印一个点数``if` `current_player[``0``]` `=``=` `current_player[``1``]:``print``(``"点数为"``+``str``(current_player[``0``])``+``"点"``)``# 否则打印两个点数``else``:``print``(``"点数为"``+``str``(current_player[``0``])``+``"点或"``+``str``(current_player[``1``]))``# 添加当前玩家点数``player_point.append(current_player)``# 返回所有玩家点数``return` `player_point``# 玩游戏``def` `play_game():``# 打印游戏规则``print``(``"-------21点游戏------"``)``print``(``"---A可看做1点或11点---"``)``# 死循环一直进行游戏``while` `True``:``# 初始化玩家数为0``player_count` `=` `0``# 当玩家数小于等于1或大于5时继续询问``while` `player_count <``=` `1` `or` `player_count >` `5``:``# 询问玩家数``print``(``"有多少位玩家?(2~5位)"``, end``=``"")``# 获取控制台输入的数字 无验证输入 若输入非数字 程序直接报错``player_count` `=` `int``(``input``())``# 初始化游戏 返回玩家组 玩家是否要牌 乱序52张扑克``player_group, player_isWant, poker` `=` `init(player_count)``# 开始发牌 先为每位玩家发两张牌 循环玩家数``for` `index` `in` `range``(player_count):``for` `i` `in` `range``(``2``):``# pop() 函数用于移除列表中的一个元素(默认最后一个元素)并且返回该元素的值。``player_group[index].append(poker.pop())``# 打印玩家点数 并获取当前玩家点数``player_point` `=` `print_player_point(player_group)``# 只要玩家继续要牌 且 还有剩余牌 则一直询问玩家是否要牌``while` `True` `in` `player_isWant` `and` `len``(poker) >` `0``:``# 遍历玩家``for` `index` `in` `range``(player_count):``# 判断玩家是否有可能还需要牌``if` `player_isWant[index]` `is` `True``:``# 询问玩家是否要牌``print``(``"玩家"``+``str``(index``+``1``)``+``",您再要一张?(y/n)"``)``# 获取控制台输入``isWant` `=` `str``(``input``())[``0``]``# 如果输入的字符为"n" 则将玩家标记为不再需要牌``if` `isWant` `=``=` `"n"``:``player_isWant[index]` `=` `False``# 如果不为字符"n" 默认为继续要牌 给该玩家发一张牌``else``:``player_group[index].append(poker.pop())``# 每轮询问结束 打印玩家点数 并获取当前玩家点数``player_point` `=` `print_player_point(player_group)``print``(``"\n"``*``5``+``"====本轮游戏结束===="``)``# 定义一个计分器``score` `=` `[]``# 要牌结束 遍历所有玩家的点数 判断哪位玩家胜利``for` `point_list` `in` `player_point:``# 如果两个两个点数相同 说明没有A``if` `point_list[``0``]` `=``=` `point_list[``1``]:``# 如果分数大于21 直接取负数 小于等于21 任意取一个作为分数``score.append(``-``point_list[``0``]` `if` `point_list[``0``] >` `21` `else` `point_list[``0``])``# 如果两个点数不想同 说明含有A 则继续判断``else``:``# 如果两个点数中大的那个点数还小于等于21``if` `max``(point_list) <``=` `21``:``# 去最大值为分数``score.append(``max``(point_list))``# 如果两个点数中大的那个点数大于21``else``:``# 如果小的点数大于21 直接取负数 小于等于21 取最小值为分数``score.append(``-``min``(point_list)` `if` `min``(point_list) >` `21` `else` `min``(point_list))``# 最高分``max_point` `=` `max``(score)``# 如果最高分的人数为1 直接认为最高分的玩家获胜 打印游戏结果``if` `score.count(max_point)` `=``=` `1``:``print``(``"玩家"``+``str``(score.index(max_point)` `+` `1``)``+``"获胜!"``)``# 否则最高分的分数有并列 认为有多个人获胜``else``:``# 获胜玩家列表``temp_list` `=` `[]``# 遍历分数``for` `index` `in` `range``(``len``(score)):``# 分数等于最高分 记录玩家``if` `score[index]` `=``=` `max_point:``temp_list.append(``"玩家"``+``str``(index``+``1``))``# 拼接获胜玩家列表 打印游戏结果``print``(``"恭喜"``+``","``.join(temp_list)``+``"获胜!"``)``# 询问是否继续游戏``print``(``"是否继续游戏?(y/n)"``)``# 如果控制台输入不为字符"y" 表示退出``if` `str``(``input``())[``0``] !``=` `'y'``:``sys.exit()``# 程序主入口``if` `__name__` `=``=` `'__main__'``:``# 玩游戏``play_game()`

|

运行结果如下

到此这篇关于Python扑克牌21点游戏实例代码的文章就介绍到这了,更多相关Python扑克牌游戏内容请搜索python教程入门学习以前的文章或继续浏览下面的相关文章希望大家以后多多支持python教程入门学习!

【python教程入门学习】Python扑克牌21点游戏实例代码相关推荐

  1. [python教程入门学习]python学习笔记(CMD执行文件并传入参数)

    本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

  2. [python教程入门学习]Python是什么?

    Python 是一种高级计算机编程语言,作者是荷兰人吉多·范罗苏姆.在 1989 年圣诞节期间,吉多打算开发一种新的脚本语言,用来取代 ABC 语言,就这样,一门新的编程语言 Python 诞生了. ...

  3. [python教程入门学习]Python标准库映射类型与可散列数据类型的关系

    本文章向大家介绍Python标准库映射类型与可散列数据类型的关系,主要包括Python标准库映射类型与可散列数据类型的关系使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

  4. 【python教程入门学习】第一个Pygame程序

    Pygame 作为一个入门级的游戏开发库,其实并不难学,只要掌握 Python 编程的相关知识就能很轻松地掌握它. Pygame 语法简单.明了,秉持了 Python 语言一贯的风格.同时,它作为一个 ...

  5. 【python教程入门学习】Python实现自动玩贪吃蛇程序

    这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹 ...

  6. 【python教程入门学习】普通人学python有意义吗

    普通人学python有意义吗?普通人能不能学习python语言,难不难,是否容易上手,学了python能做那些事情,能挣多少钱?这些问题是很多同学关心的问题,今天python教程入门学习就从小白同学的 ...

  7. 【python教程入门学习】学python要多久,0基础学python有多难

    学python要多久,0基础学python有多难,这是很多想学习python语言同学绕不开的问题,都害怕花完钱最终没有应有的回报!对于毫无经验0基础的同学来说学习python什么最重要,方向选对坚持下 ...

  8. 【python教程入门学习】Python新年炫酷烟花秀代码

    先介绍下 Pygame 绘制烟花的基本原理,烟花从发射到绽放一共分为三个阶段: 1,发射阶段:在这一阶段烟花的形状是线性向上,通过设定一组大小不同.颜色不同的点来模拟"向上发射" ...

  9. 【python教程入门学习】python能做什么

    python能做什么?[python教程入门学习]介绍,最近许多的朋友咨询,听说python很火,甚至可以超越JAVA,因此很想学这个python,但是不知道python能做什么,能完成一些什么项目呢 ...

最新文章

  1. MySQL:讨人喜欢的 MySQL replace into 用法(insert into 的增强版)
  2. 世界级Oracle专家权威力作
  3. mysql下count(*)和count(1)的区别
  4. 校园技术工坊丨云开发校园执行官招募开启!
  5. Java基础知识——Java数组详解
  6. ac 梦幻布丁 启发式合并
  7. 关于非root用户配置ssh运行环境
  8. win10,配置环境变量时系统环境变量和用户环境变量的优先级
  9. java sar包_linux下查看最占性能的JAVA进程
  10. Struts2中带参数的结果集
  11. C:\Windows\Installer越来越大?让我们一起来删除msp这个毒瘤
  12. 小米airdots2蓝牙耳机连上手机后没有声音
  13. CSS Transition
  14. Python -- 限流 throttle
  15. 初探 MVP(Model View Presenter) 设计模式
  16. 基于java的企业门户网站
  17. 王垠的「40 行代码」真如他说的那么厉害吗?
  18. 简单易学的机器学习算法——K-Means++算法
  19. python 统计单词音节数
  20. CET4汉译英part

热门文章

  1. php检测目标服务器是否宕机_Docker卸载镜像
  2. 15年15个网站改变世界
  3. 深度学习:目标分割|UNet网络模型及案例实现
  4. UEFI 基础教程 (一) - 运行第一个APP HelloWorld
  5. python编写一个简单的程序、验证数据是否符合正态分布_Python检验数据是否正态分布...
  6. 4亿活跃用户,同时在线用户6000万,网友:期待快播团队再次崛起
  7. 网页TDK标签“title、description、keywords“(笔记)
  8. 橙子02-Hadoop生态系统
  9. RGB图像灰度直方图的绘制
  10. 认识K8s容器存储接口CSI