前面我们讲了python的爬虫,其实python也可以制作游戏,又好玩又有趣,这一章带大家来做一个小游戏来体验一下:
下面我们在代码中来了解更多细节:

游戏规则:

一副扑克牌52张(除了大小王), 4个玩家在玩,模拟系统发牌、洗牌和整理牌,具体需求如下:
【1】先按照顺序打印出一副扑克牌
【2】在没有洗牌的情况下,输出发到四个玩家的扑克牌
【3】实现对扑克牌的洗牌,然后输出发到四个玩家的扑克牌
【4】对于洗牌后的四个玩家的扑克牌进行整理
整理规则:
1:数字从小到大 (3、4、5、6、7、8、9、10、J、Q、K、A、2)
2:在数字相同的情况下,按照花色(黑、红、梅、方)的顺序

"""
扑克牌游戏
"""
import time
import random# 扑克牌的基础数据
POKER_DICT = {'number': ('3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A', '2'),# 对应的索引排序 便于我们后面做整理排序#  0    1    2    3    4    5    6     7    8    9    10   11   12'type': ("♠", "♥", "♦", "♣")#  0   1    2    3
}# 比如: 黑桃10  -->  10 00
#       方块6   -->   06 02class PokerGame:# 构造函数def __init__(self, poker_number: int = 1, person_number: int = 4):self.poker_number = poker_number  # 几付扑克牌self.person_number = person_number  # 玩家数量# 定义变量存储数据self.poker_list = []# 定义集合存储玩家的牌self.person_poker_list = []  # [[第一个玩家],[2],[3],[4]]# 定义集合存储整理完玩家的牌# self.person_sorted_poker_list = [] # 整理完的4个玩家的牌def start(self):print("正在启动游戏.....")time.sleep(2)  # 让程序暂停2秒print("游戏已启动")while True:print("\n" + "=" * 40 + "扑克牌游戏" + "=" * 40)input_number = input("请选择要执行的操作【1-生成牌 2-打印所有牌 3-打印玩家牌 4-发牌 5-洗牌 6-整理牌 7-退出】:")# 根据输入的数字,来进行条件选择if input_number == "1":# 生成牌print("正在生成扑克牌.....")time.sleep(2)  # 让程序暂停2秒self.build()print("扑克牌生成完成!")elif input_number == "2":# 打印所有的牌print("正在打印所有的扑克牌.....")self.print_all_poker(self.poker_list)elif input_number == "3":# 打印玩家的牌print("正在打印玩家的扑克牌.....")self.print_person_poker()elif input_number == "4":# 发牌print("正在发牌.....")self.deal_poker()print("发牌完毕.....")elif input_number == "5":# 洗牌print("正在洗牌.....")random.shuffle(self.poker_list)  # 把list集合打乱print("洗牌完毕.....")elif input_number == "6":# 整理牌print("正在整理玩家的牌.....")self.person_sorted_poker()print("玩家的牌整理完毕.....")elif input_number == "7":# 退出print("游戏已退出,再见!")breakelse:print("输入的数字不符合要求,请重新输入!")def build(self):"""生成扑克牌"""# 定义一个Poker数字poker_number = []# 生成for number in range(13):poker_number.append("%02d" % number)# 定义Poker花色poker_type = ["00", "01", "02", "03"]# 生成牌  几付牌--》数字--》花色for pair in range(self.poker_number):for number in poker_number:for type in poker_type:self.poker_list.append(number + type)def print_all_poker(self, print_list: list):"""打印所有的牌"""for one_poker in print_list:# 0601 --> 红桃9print("%s%s" % (POKER_DICT['type'][int(one_poker[2:])], POKER_DICT['number'][int(one_poker[:2])]), end="\t")def deal_poker(self):"""发牌"""for person_index in range(self.person_number):# 定义一个玩家的临时的集合 第一次:0  第二次:1  第三次:2, 第四次:3temp_list = []# 遍历牌for index in range(len(self.poker_list)):# 根据索引判断if index % self.person_number == person_index:  # 第一玩家:0  4   8  12   16# 附加到这个玩家的集合                        # 第二玩家:1  5  9  13   17temp_list.append(self.poker_list[index])      # 第三玩家: 2  6  10  14  18# 第四玩家:3   7  11  15  19# 把这个玩家的牌添加到集合self.person_poker_list.append(temp_list)def print_person_poker(self):"""打印玩家的扑克"""for index, value in enumerate(self.person_poker_list):# 换行:print()# 打印提示print("第%d个玩家的牌:" % (index + 1), end="")self.print_all_poker(self.person_poker_list[index])def person_sorted_poker(self):"""整理玩家手上的牌"""# 遍历for one_person_poker in self.person_poker_list:# 附加到整理好的牌中one_person_poker.sort()  # 改变原来的集合if __name__ == '__main__':# 实例化一个游戏game01 = PokerGame(1,3)# 开始游戏game01.start()# 知识点:条件选择 ,循环,  List,  Dict ,  面向对象的思维

我们来看一下运行的结果:

代码是完整的,大家可以自己运行试试哦

下一章爬虫与反爬虫

4.5 python 实战之扑克牌游戏 2021-06-20相关推荐

  1. Python 实战开发俄罗斯方块游戏

    "人生苦短,我用 Python",这是网络上的一句戏言,却真实反映了 Python 语言的江湖地位.2017年 IEEE Spectrum 杂志发布的编程语言排行榜中,Python ...

  2. Python基础《扑克牌游戏》

    #Cards Module#1.Card类 class Card():RANKS=['A','2','3','4','5'.'6','7','8','9','10','J','Q','K']SUITS ...

  3. python爬虫笔记 -- 更新至2021/06/17

    教学视频1(简略):https://www.bilibili.com/video/BV1164y1m7Xb 教学视频2:https://www.bilibili.com/video/BV1Yh411o ...

  4. pmp复习资料链接-2021.06.20考试(中培)

    文章目录 第一章 引论 第二章 项目运行坏境与项目经理 第三章 项目经理 第四章 项目整合管理 第五章 项目范围管理 第六章 项目进度管理 第七章 项目成本管理 第八章 项目质量管理 第九章 项目资源 ...

  5. 2021/06/20 九析带你轻松完爆 istio (一)

    大纲介绍 **istio是一种服务网格的实现,大概从12个方面 0 istio的简单介绍 1 istio的架构和核心 2 ** 1 istio的架构和核心,有两个平面,数据平面envoy(负责服务间通 ...

  6. (第42册)Python项目案例开发从入门到实战——爬虫、游戏和机器学习(第2版) 夏敏捷 郑秋生 尚展垒著

    本书由Python基础开发入手,延伸至爬虫技术开发.游戏开发.人工智能开发.网络应用开发.图像处理和可视化开发6个Python经典开发方向: 全书共提供25个项目案例,以项目驱动方式展开各知识点的讲解 ...

  7. python纸牌游戏_《升级》扑克牌游戏——Python实现

    [实例简介] <升级>扑克牌游戏--Python实现,包括UI界面,AI玩家,裁判监督三大模块. [实例截图] [核心代码] UI └── UI ├── Readme.pdf ├── UI ...

  8. Python 抽扑克牌游戏

    ''' Python 抽扑克牌游戏 by 郑瑞国 ''' import random puke=[x for x in range(1,55)] pukes={} #print(puke)types ...

  9. Java入门第三季-综合实战:简易扑克牌游戏

    一.概述 第三季的综合实战部分是写一个简易扑克牌游戏,功能实现要求如下: 1.创建一副扑克牌 包括四种花色: 黑桃 红桃 梅花 方片 十三种点数 2-10,JQKA,不考虑大小王 2.创建两名玩家 玩 ...

最新文章

  1. P1634 禽兽的传染病
  2. Mozilla 准备让“合格” Linux 用户测试 WebRender
  3. 论文阅读:An Enhanced Deep Feature Representation for Person Re-identification
  4. Excel打开csv文件显示乱码问题解决方法
  5. Nginx+keepalived从入门到集群搭建(手把手教学,建议收藏)
  6. python的魔法方法--__
  7. 设定自动获得DNS服务器地址
  8. 一个用JavaScript生成思维导图(mindmap)的github repo
  9. python中x y 1_Python的X[y==1, 0]
  10. 不扯概念,用例子演示什么是脏读,不可重复读,幻读?
  11. 源导航V1.0-集网址、资源、资讯于一体的导航系统
  12. Xamarin自定义布局系列——PivotPage(多页面切换控件)
  13. 华为击败思科 赢得阿曼2600万美元NGN合同
  14. 电脑键盘出现计算机,电脑上出现了键盘怎么办
  15. 树的计数 + prufer序列与Cayley公式(转载)
  16. 苹果付费app共享公众号_8.11号,IOS苹果App Store 5款付费App限时免费,支持iPhone/iPad...
  17. AE的QuickTime问题
  18. 人生如逆旅,我亦是行人。
  19. 发布者订阅者模式之JAVA实现
  20. 接收字符大写转化为对应的小写

热门文章

  1. 百度将推MIP 实现移动网页加速
  2. 全网最全的Java学习路线图,附配套视频!
  3. F - Construct Highway
  4. 宋丹丹被曝注重养生 每餐必吃黑木耳(图)
  5. 计算机应用 论文模板,计算机毕业论文格式(计算机毕业论文格式模板范文)
  6. Day623.并发编程工具类库使用错误问题 -Java业务开发常见错误
  7. 基于工程热物理的燃料电池(Thermolib)和整车模型集成系统级仿真探讨
  8. 华工计算机答辩,华南理工大学学位论文答辩注意事项!
  9. 公众号原主体已注销如何办理迁移及公证书?
  10. 华三S6900交换机29~36口不支持千兆