4.5 python 实战之扑克牌游戏 2021-06-20
前面我们讲了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相关推荐
- Python 实战开发俄罗斯方块游戏
"人生苦短,我用 Python",这是网络上的一句戏言,却真实反映了 Python 语言的江湖地位.2017年 IEEE Spectrum 杂志发布的编程语言排行榜中,Python ...
- Python基础《扑克牌游戏》
#Cards Module#1.Card类 class Card():RANKS=['A','2','3','4','5'.'6','7','8','9','10','J','Q','K']SUITS ...
- python爬虫笔记 -- 更新至2021/06/17
教学视频1(简略):https://www.bilibili.com/video/BV1164y1m7Xb 教学视频2:https://www.bilibili.com/video/BV1Yh411o ...
- pmp复习资料链接-2021.06.20考试(中培)
文章目录 第一章 引论 第二章 项目运行坏境与项目经理 第三章 项目经理 第四章 项目整合管理 第五章 项目范围管理 第六章 项目进度管理 第七章 项目成本管理 第八章 项目质量管理 第九章 项目资源 ...
- 2021/06/20 九析带你轻松完爆 istio (一)
大纲介绍 **istio是一种服务网格的实现,大概从12个方面 0 istio的简单介绍 1 istio的架构和核心 2 ** 1 istio的架构和核心,有两个平面,数据平面envoy(负责服务间通 ...
- (第42册)Python项目案例开发从入门到实战——爬虫、游戏和机器学习(第2版) 夏敏捷 郑秋生 尚展垒著
本书由Python基础开发入手,延伸至爬虫技术开发.游戏开发.人工智能开发.网络应用开发.图像处理和可视化开发6个Python经典开发方向: 全书共提供25个项目案例,以项目驱动方式展开各知识点的讲解 ...
- python纸牌游戏_《升级》扑克牌游戏——Python实现
[实例简介] <升级>扑克牌游戏--Python实现,包括UI界面,AI玩家,裁判监督三大模块. [实例截图] [核心代码] UI └── UI ├── Readme.pdf ├── UI ...
- Python 抽扑克牌游戏
''' Python 抽扑克牌游戏 by 郑瑞国 ''' import random puke=[x for x in range(1,55)] pukes={} #print(puke)types ...
- Java入门第三季-综合实战:简易扑克牌游戏
一.概述 第三季的综合实战部分是写一个简易扑克牌游戏,功能实现要求如下: 1.创建一副扑克牌 包括四种花色: 黑桃 红桃 梅花 方片 十三种点数 2-10,JQKA,不考虑大小王 2.创建两名玩家 玩 ...
最新文章
- P1634 禽兽的传染病
- Mozilla 准备让“合格” Linux 用户测试 WebRender
- 论文阅读:An Enhanced Deep Feature Representation for Person Re-identification
- Excel打开csv文件显示乱码问题解决方法
- Nginx+keepalived从入门到集群搭建(手把手教学,建议收藏)
- python的魔法方法--__
- 设定自动获得DNS服务器地址
- 一个用JavaScript生成思维导图(mindmap)的github repo
- python中x y 1_Python的X[y==1, 0]
- 不扯概念,用例子演示什么是脏读,不可重复读,幻读?
- 源导航V1.0-集网址、资源、资讯于一体的导航系统
- Xamarin自定义布局系列——PivotPage(多页面切换控件)
- 华为击败思科 赢得阿曼2600万美元NGN合同
- 电脑键盘出现计算机,电脑上出现了键盘怎么办
- 树的计数 + prufer序列与Cayley公式(转载)
- 苹果付费app共享公众号_8.11号,IOS苹果App Store 5款付费App限时免费,支持iPhone/iPad...
- AE的QuickTime问题
- 人生如逆旅,我亦是行人。
- 发布者订阅者模式之JAVA实现
- 接收字符大写转化为对应的小写