前面我们讲了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. [Buzz.Today]2011.05.25
  2. TensorFlow patch块划分(transpose and reshape)
  3. JavaScript-面向对象详解
  4. 猴子摘桃python代码_阿尔法python练习(4-6答案)
  5. WP8模拟器需要BIOS开启虚拟化支持(转载)
  6. 项目开发中自定义字段设计原则
  7. IDEA使用Build Artifacts进行项目打包时,发现没有可供打包的项目
  8. 程序员面临 35 岁危机?网友:我 70 了,依然在写程序
  9. adadelta算法_(学习率自适应的梯度下降算法)ADADELTA: AN ADAPTIVE LEARNING RATE METHOD(2012)...
  10. 【Spark】Spark安装详解
  11. win10 动态磁盘 linux,win10 动态磁盘 无效,win10动态磁盘不能识别
  12. Wise Force Deleter(电脑文件强制删除软件)官方中文版V1.5.3.54 | 支持强制删除超大文件夹
  13. android画廊无限轮播,ViewPager无限循环实现画廊式banner
  14. Java算法:牛客网哔哩哔哩bilibili笔试真题算法Java版1-14题
  15. 2021计算机夏令营保研经历(中科院计算所,南京大学人工智能学院等)
  16. 共享单车的扫码解锁原理是什么?2222
  17. FPGA,关于安装使用libero IDE V9.2 及其gold floating license配置
  18. 上海居住证续签流程须知
  19. 微信小程序背景图片background无法在手机端显示问题解决方案
  20. 牛客网数据库SQL实战14—— 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略。

热门文章

  1. Mockito 也能 Mock final 类和 final 方法了
  2. 高项之十大管理及其过程记忆技巧
  3. gradle打包的使用
  4. FFMPEG让群晖DSM7.X版本的Video Station支持DTS视频编码和EAC3音频编码
  5. SOLIDWORKS提升 SAE赛车队成绩
  6. 解析 GetRerootedSIL
  7. 判断 1000-2000 年之间的闰年
  8. Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法与有用代码片段
  9. openfire服务器源码阅读学习之启动流程(一)
  10. 低版本Excel文件在高版本excel软件打开时乱码的解决