技术教育社区
www.teccses.org

Python面向对象编程:构建游戏和GUI:master oop by building games and GUIs

封面

作者:(美)艾维·卡尔布(Irv Kalb)著

页数:295页

出版社:人民邮电出版社

出版日期:2023

ISBN:9787115602312

电子书格式:pdf/epub/txt

内容简介

本书首先介绍构建类和创建对象的基础知识,并结合代码讲述如何将理论付诸实践;然后讨论面向对象编程的关键概念——封装、多态性和继承,包括如何使用对象管理器创建并管理多个对象,如何通过封装对客户端代码隐藏对象的内部细节,如何使用多态性定义一个接口并在多个类中实现它,如何应用继承构建现有代码;最后讲述如何构建一款带完整的动画和声音的视频游戏,从而将所有内容整合在一起。本书涵盖了两个功能齐全的Python代码包,它们将加速Python中图形用户界面程序的开发。本书不仅适合Python开发人员阅读,还适合计算机相关专业的师生阅读。

作者简介

Irv Kalb是加州大学圣克鲁斯硅谷分校和硅谷大学的客座教授,负责“Python入门”与“Python面向对象编程”课程的教学。Irv拥有计算机科学的学士和硕士学位,使用多种计算机语言进行面向对象编程已超过30年,并且到现在已经有超过10年的教学经验。他有几十年的软件开发经验,主要关注教育软件的开发。在Furry Pants Productions公司,他和妻子以Darby the Dalmatian这个角色为原型,制作并发布了两张寓教于乐的CD-ROM。Irv还撰写了Learn to Program with Python 3: A Step-by-step Guide to Programming(Apress)一书。Irv深入参与了极限飞盘(Ultimate Frisbee)这项运动的早期开发。他主持编写了多个版本的官方规则手册,并与人合著了关于这项运动的图书—— Ultimate: Fundamentals of the Sport。

本书特色

适读人群 :本书不仅适合Python开发人员阅读,还适合计算机相关专业的师生阅读。1.通过面向对象编程(Object-Oriented Programming,OOP),能有效地解决计算问题;2.深入剖析OOP的封装、多态性和继承,展示了如何在Python中使用这些特性开发游戏和应用程序;3.通过实践,综合运用本书介绍的许多OOP技术和GUI元素,创建一个功能完整的视频游戏;4.理解OOP的工作方式,提高代码的可读性,提升编程的水平和效率。

目录

目  录

第 一部分 面向对象编程入门

第 1章 过程式Python示例 2

1.1 Higher or Lower纸牌游戏 2

1.1.1 表示数据 2

1.1.2 实现 3

1.1.3 可重用的代码 5

1.2 银行账户模拟 5

1.2.1 分析必要的操作和数据 5

1.2.2 实现1:不使用函数的单个账户 6

1.2.3 实现2:使用函数的单个账户 7

1.2.4 实现3:两个账户 9

1.2.5 实现4:使用列表的多个账户 10

1.2.6 实现5:账户字典的列表 13

1.3 过程式实现的常见问题 15

1.4 面向对象解决方案:初识类 15

1.5 小结 16

第 2章 通过面向对象编程模拟物体 17

2.1 构建物体的软件模型 17

2.2 类和对象简介 18

2.3 类、对象和实例化 19

2.3.1 在Python中编写类 20

2.3.2 作用域和实例变量 21

2.3.3 函数和方法的区别 22

2.3.4 从类创建对象 22

2.3.5 调用对象的方法 23

2.3.6 从相同类创建多个实例 24

2.3.7 Python数据类型被实现为类 25

2.3.8 对象的定义 26

2.4 创建一个更加复杂的类 26

2.5 将一个更加复杂的物理对象表示为类 28

2.5.1 向方法传递实参 32

2.5.2 多个实例 33

2.5.3 初始化参数 34

2.6 类的使用 35

2.7 以OOP作为解决方案 35

2.8 小结 36

第3章 对象的思维模型和 “self”的意义 37

3.1 重看DimmerSwitch类 37

3.2 1号高级思维模型 38

3.3 2号深层模型 39

3.4 self的含义 41

3.5 小结 43

第4章 管理多个对象 44

4.1 银行账户类 44

4.2 导入类的代码 46

4.3 创建一些测试代码 47

4.3.1 创建多个账户 47

4.3.2 在列表中包含多个Account对象 49

4.3.3 具有唯一标识符的多个对象 51

4.3.4 创建一个交互式菜单 53

4.4 创建对象管理器 54

4.4.1 创建对象管理器 56

4.4.2 创建对象管理器的主代码 58

4.5 使用异常更好地处理错误 59

4.5.1 try和except 60

4.5.2 raise语句和自定义异常 60

4.6 在Bank程序中使用异常 61

4.6.1 使用异常的Account类 61

4.6.2 优化后的Bank类 63

4.6.3 处理异常的主代码 64

4.7 在对象列表上调用相同的方法 65

4.8 接口与实现 67

4.9 小结 67

第二部分 使用pygame创建图形

用户界面

第5章 pygame简介 70

5.1 安装pygame 70

5.2 窗口 71

5.2.1 窗口坐标系统 71

5.2.2 像素颜色 74

5.3 事件驱动的程序 75

5.4 使用pygame 76

5.4.1 打开一个空白窗口 76

5.4.2 绘制图片 79

5.4.3 检测鼠标单击 81

5.4.4 处理键盘操作 83

5.4.5 创建基于位置的动画 86

5.4.6 使用pygame矩形 88

5.5 播放声音 90

5.5.1 播放音效 90

5.5.2 播放背景音乐 91

5.6 绘制形状 92

5.7 小结 95

第6章 面向对象的pygame 96

6.1 使用OOP pygame创建屏保球 96

6.1.1 创建Ball类 96

6.1.2 使用Ball类 98

6.1.3 创建多个Ball对象 99

6.1.4 创建大量Ball对象 100

6.2 构建可重用的、面向对象的按钮 101

6.2.1 构建一个Button类 101

6.2.2 使用SimpleButton的主代码 103

6.2.3 创建包含多个按钮的程序 104

6.3 构建可重用的、面向对象的文本显示 105

6.3.1 显示文本的步骤 105

6.3.2 创建SimpleText类 106

6.4 包含SimpleText和SimpleButton的弹球示例 107

6.5 对比接口与实现 109

6.6 回调函数 109

6.6.1 创建回调函数 110

6.6.2 对SimpleButton使用回调函数 110

6.7 小结 112

第7章 pygame GUI小部件 113

7.1 向函数或方法传递实参 113

7.1.1 位置和关键字形参 114

7.1.2 关于关键字形参的一些说明 115

7.1.3 使用None作为默认值 115

7.1.4 选择关键字和默认值 116

7.1.5 GUI小部件中的默认值 117

7.2 pygwidgets包 117

7.2.1 设置 117

7.2.2 总体设计方法 118

7.2.3 添加图片 119

7.2.4 添加按钮、复选框和单选按钮 119

7.2.5 文本输出和输入 122

7.2.6 其他pygwidgets类 124

7.2.7 pygwidgets示例程序 124

7.3 一致的API的重要性 125

7.4 小结 125

第三部分 封装、多态性和继承

第8章 封装 128

8.1 函数的封装 128

8.2 对象的封装 129

8.3 封装的含义 129

8.3.1 直接访问方式以及为什么应该避免使用这种方式 130

8.3.2 严格解释getter和setter 133

8.3.3 安全的直接访问 135

8.4 使实例变量更加私密 135

8.4.1 隐式私有 135

8.4.2 更加显式地私有 135

8.5 装饰器和@属性 136

8.6 pygwidgets类中的封装 139

8.7 一个真实的故事 140

8.8 抽象 141

8.9 小结 143

第9章 多态性 144

9.1 向现实世界的对象发送消息 144

9.2 编程中应用多态性的经典示例 145

9.3 使用pygame形状的示例 146

9.3.1 Square类 146

9.3.2 Circle类和Triangle类 147

9.3.3 创建形状的主程序 149

9.3.4 扩展模式 151

9.4 pygwidgets表现出多态性 151

9.5 运算符的多态性 152

9.5.1 魔术方法 153

9.5.2 比较运算符的魔术方法 153

9.5.3 包含魔术方法的Rectangle类 154

9.5.4 使用魔术方法的主程序 156

9.5.5 数学运算符的魔术方法 158

9.5.6 向量示例 158

9.6 创建对象中值的字符串表示 160

9.7 包含魔术方法的Fraction类 162

9.8 小结 165

第 10章 继承 166

10.1 面向对象编程中的继承 166

10.2 实现继承 167

10.3 Employee和Manager示例 168

10.3.1 基类Employee 168

10.3.2 子类Manager 168

10.3.3 测试代码 170

10.4 客户端眼中的子类 171

10.5 现实世界的继承示例 172

10.5.1 InputNumber 172

10.5.2 DisplayMoney 174

10.5.3 示例用法 176

10.6 从同一个基类继承多个类 179

10.7 抽象类和抽象方法 182

10.8 pygwidgets如何使用继承 185

10.9 类的层次 186

10.10 使用继承编程的困难 187

10.11 小结 188

第 11章 管理对象使用的内存 189

11.1 对象的生存期 189

11.1.1 引用计数 189

11.1.2 垃圾回收 194

11.2 类变量 194

11.2.1 类变量常量 194

11.2.2 将类变量用于计数 195

11.3 综合运用:气球示例程序 196

11.3.1 常量模块 197

11.3.2 主程序代码 198

11.3.3 气球管理器 200

11.3.4 Balloon类和对象 202

11.4 使用slots管理内存 204

11.5 小结 206

第四部分 在游戏开发中使用OOP

第 12章 纸牌游戏 208

12.1 Card类 208

12.2 Deck类 210

12.3 Higher or Lower游戏 212

12.3.1 主程序 212

12.3.2 Game对象 213

12.4 使用__name__进行测试 216

12.5 其他纸牌游戏 217

12.5.1 Blackjack牌堆 217

12.5.2 使用非标准牌堆的游戏 217

12.6 小结 218

第 13章 定时器 219

13.1 定时器演示程序 219

13.2 实现定时器的3种方法 220

13.2.1 统计帧数 220

13.2.2 定时器事件 221

13.2.3 通过计算经过的时间来创建定时器 222

13.3 安装pyghelpers 223

13.4 Timer类 224

13.5 显示时间 226

13.5.1 CountUpTimer 226

13.5.2 CountDownTimer 228

13.6 小结 229

第 14章 动画 230

14.1 构建动画类 230

14.1.1 SimpleAnimation类 230

14.1.2 SimpleSpriteSheetAnimation类 234

14.1.3 将两个类合并起来 237

14.2 pygwidgets中的动画类 237

14.2.1 Animation类 238

14.2.2 SpriteSheetAnimation类 239

14.2.3 公共基类PygAnimation 240

14.2.4 示例动画程序 240

14.3 小结 241

第 15章 场景 242

15.1 状态机方法 242

15.2 状态机的一个pygame示例 244

15.3 用于管理许多场景的场景管理器 248

15.4 使用场景管理器的一个示例程序 249

15.4.1 主程序 250

15.4.2 构建场景 252

15.4.3 一个典型场景 254

15.5 使用场景的Rock,Paper,Scissors 255

15.6 场景之间的通信 259

15.6.1 从目标场景请求信息 259

15.6.2 向目标场景发送信息 260

15.6.3 向所有场景发送信息 260

15.6.4 测试场景之间的通信 260

15.7 场景管理器的实现 261

15.7.1 run()方法 262

15.7.2 主方法 263

15.7.3 场景之间的通信 264

15.8 小结 265

第 16章 完整的Dodger 游戏 266

16.1 模态对话框 266

16.1.1 Yes/No和警告对话框 266

16.1.2 Answer对话框 269

16.2 构建完整的Dodger游戏 271

16.2.1 游戏概述 271

16.2.2 实现 272

16.2.3 扩展游戏 287

16.3 小结 287

第 17章 设计模式及收尾 289

17.1 模型-视图-控制器 289

17.1.1 文件显示示例 289

17.1.2 统计显示示例 290

17.1.3 MVC模式的优势 294

17.2 小结 294

下载地址

立即下载

(解压密码:www.teccses.org)

Article Title:《Python面向对象编程:构建游戏和GUI:master oop by building games and GUIs》
Article link:https://www.teccses.org/1448900.html