您的浏览器不支持JavaScript,请开启后继续
Python游戏开发从入门到进阶实战

Python游戏开发从入门到进阶实战

  • 作者
  • 明日科技 编著

《Python 游戏开发从入门到进阶实战》全面介绍了使用Pygame 模块进行Python 游戏开发的必备知识,可帮助读者快速掌握Python+Pygame 开发的技能。 全书共15章, 分为基础篇和案例篇。其中基础篇介绍了Python和Pygame基础、Pygame 程序开发流程、Pygame 游戏开发基础、字体和文字、事件监听、图形绘制、位图图形、精灵的使用、音频处理等内容;案例篇主...


  • ¥98.00

ISBN: 978-7-122-43784-6

版次: 1

出版时间: 2024-04-01

图书介绍

ISBN:978-7-122-43784-6

语种:汉文

开本:16

出版时间:2024-04-01

装帧:平

页数:275

编辑推荐

1.为初学者量身打造,非常适合python学习与pygame游戏开发入门。 2.案例趣味性强,涵盖了多种游戏类型,寓教于乐。 3.提供增值服务,qq群在线支持,以及案例源代码、游戏素材等资源下载。 4.全彩印刷,精彩呈现python游戏编程的精髓与要点。

图书前言

Python是当前十分热门的编程语言,它的应用范围非常广泛,除了人工智能、数据分析等领域,它在Web 开发、游戏开发等领域也非常受欢迎。
随着相关技术的不断发展,想开发一款游戏,对于普通的爱好者来讲,已不再是什么难事了。特别是在游戏行业大受欢迎的当代,无论是对游戏编程感兴趣的爱好者,还是正在从事游戏开发的人员,都对游戏行业有着无限的憧憬。但Python 游戏开发相关资料十分繁杂,让很多有志于从事Python游戏开发的初学者望而却步,因此,我们特意编写了本书。
本书内容
全书共分为15章,主要通过“基础篇(9章)+案例篇(6章)”帮助大家学习和掌握Python 和Pygame的开发技巧,本书具体的学习结构如下图所示:
本书特色
(1)突出重点、学以致用
书中每个知识点都结合了简单易懂的示例代码以及非常详细的注释信息,力求使读者能够快速理解所学知识,缩短学习路径,提升学习效率。
(2)提升思维、综合运用
本书以知识点综合运用的方式,带领读者制作各种趣味性较强的游戏案例,让读者不仅可以不断提升编写Python游戏的思维能力,还可以快速提升对知识点的综合运用能力,让读者能够回顾以往所学的知识点,并结合新的知识点进行综合应用。
(3)精彩栏目、贴心提示
本书根据实际学习的需要,设置了“注意”“说明”“技巧”等许多贴心的栏目,可帮助读者轻松理解所学知识。
本书读者对象
① 对游戏开发感兴趣的编程爱好者;
② 相关培训机构的老师和学生;
③ 大中专院校的老师和学生;
④ 初中级游戏开发人员,以及测试和运维人员。
读者服务
为方便解答读者在学习本书过程中遇到的疑难问题及提供更多图书配套资源,我们将提供在线技术指导和社区服务,服务方式如下:
√质量反馈信箱:mingrisoft@mingrisoft.com。
√售后服务电话:4006751066。
√QQ群:337212027。
致读者
本书由明日科技的Python开发团队策划并组织编写,主要编写人员有王小科、李磊、高春艳、张鑫、赵宁、周佳星、王国辉、赛奎春、葛忠月、宋万勇、杨丽、刘媛媛、依莹莹等。在编写本书的过程中,我们本着科学、严谨的态度,力求精益求精,但疏漏之处在所难免,敬请广大读者批评斧正。
感谢您阅读本书,希望本书能成为您编程路上的领航者。
祝您读书快乐!

编者
2024年2月

精彩书摘

《Python 游戏开发从入门到进阶实战》全面介绍了使用Pygame 模块进行Python 游戏开发的必备知识,可帮助读者快速掌握Python+Pygame 开发的技能。
全书共15章, 分为基础篇和案例篇。其中基础篇介绍了Python和Pygame基础、Pygame 程序开发流程、Pygame 游戏开发基础、字体和文字、事件监听、图形绘制、位图图形、精灵的使用、音频处理等内容;案例篇主要是Flappy Bird、玛丽冒险、推箱子、飞机大战、智力拼图、画图工具的设计过程与代码实现。
为了营造轻松的学习体验,在内容设置上,我们将Python 游戏开发相关知识进行分解,融入不同案例中,以减轻初学者的学习压力,同时实现快速上手。
本书不仅适合对游戏开发感兴趣的初学者学习使用,还适合初中级游戏开发人员以及游戏测试、运维人员参考。

目录

第1篇 基础篇
第1章 初识Python和Pygame 001
1.1 了解Python 002
1.1.1 Python概述 002
1.1.2 Python能做什么 002
1.2 Pygame 简介 003
1.2.1 Pygame的由来 003
1.2.2 Pygame能做什么 003
1.2.3 Pygame 常用子模块介绍 004
1.3 相关工具的下载与环境配置 005
1.4 第一个Pygame程序 005
实例1.1 使用Pygame 模块显示“Hello Pygame World” 005
1.5 实战练习 006

第2章 Pygame 程序开发流程 007
2.1 Pygame 程序开发的基本流程 007
2.1.1 导入Pygame模块 008
2.1.2 初始化Pygame 008
实例2.1 演示pygame.init()的使用 009
2.1.3 创建Pygame窗口 009
实例2.2 演示Pygame 窗口模式的切换 010
2.1.4 窗口图像渲染——Surface对象 012
2.1.5 设置游戏窗口状态 015
2.2 Pygame 最小开发框架 016
2.3 综合案例——绘制拼图游戏界面 018
2.4 实战练习 019

第3章 Pygame游戏开发基础 020
3.1 像素和pygame.Color对象 020
实例3.1 展示所有颜色 022
3.2 Pygame 中的透明度 023
3.2.1 像素透明度 023
实例3.2 测试像素透明度 024
3.2.2 颜色值透明度 026
实例3.3 测试颜色值透明度 026
3.2.3 图像透明度 027
3.3 窗口坐标系与pygame.Rect对象 028
3.3.1 窗口坐标系 028
3.3.2 pygame.Rect对象 028
3.4 控制帧速率 029
3.4.1 非精确控制——Clock().tick() 029
3.4.2 精确控制——Clock().tick_busy_loop() 030
3.5 向量在Pygame中的使用 030
3.5.1 向量的介绍 030
3.5.2 向量的使用 031
3.6 三角函数介绍及其使用 032
3.7 pygame.PixelArray对象 034
3.7.1 PixelArray对象概述 035
3.7.2 PixelArray对象常见操作 036
3.7.3 图像透明化处理 037
实例3.4 转换图片为透明格式 037
3.8 Pygame 的错误处理 038
3.9 综合案例——绘制动态太极图 039
3.10 实战练习 042

第4章 字体和文字 043
4.1 加载和初始化字体模块 043
4.1.1 初始化与还原字体模块 044
4.1.2 获取可用字体 045
4.1.3 获取Pygame模块提供的默认字体文件 045
4.2 Font字体类对象 045
4.2.1 创建Font类对象 046
4.2.2 渲染文本 047
实例4.1 演示文本渲染 048
4.2.3 设置及获取文本渲染模式 049
4.2.4 获取文本渲染参数 051
实例4.2 查看文本图像的参数 052
4.3 综合案例——绘制“Python 之禅” 053
4.4 实战练习 058

第5章 事件监听 059
5.1 理解事件 059
5.2 事件检索 060
实例5.1 打印输出所有事件 061
5.3 处理键盘事件 063
实例5.2 记录键盘按下键字符 064
5.4 处理鼠标事件 066
实例5.3 更换鼠标图片为画笔 066
5.5 设备轮询 068
5.5.1 轮询键盘 068
实例5.4 打字小游戏 069
5.5.2 轮询鼠标 070
5.6 事件过滤 071
5.7 自定义事件 071
5.8 综合案例——挡板接球游戏 072
5.9 实战练习 076

第6章 图形绘制 077
6.1 pygame.draw模块概述 077
6.2 使用pygame.draw模块绘制基本图形 078
6.2.1 绘制线段 078
实例6.1 绘制线段 078
6.2.2 绘制矩形 079
实例6.2 绘制可移动的矩形 080
6.2.3 绘制多边形 081
实例6.3 绘制南丁格尔图 081
6.2.4 绘制圆 084
实例6.4 绘制一箭穿心图案 084
6.2.5 绘制椭圆 087
实例6.5 绘制椭圆 087
6.2.6 绘制弧线 088
实例6.6 绘制WIFI 信号图 089
6.3 综合案例——会动的乌龟 090
6.4 实战练习 093

第7章 位图图形 094
7.1 位图基础 094
7.2 Surface 对象 095
7.2.1 创建Surface对象 095
7.2.2 拷贝Surface对象 096
7.2.3 修改Surface 对象 097
7.2.4 剪裁Surface区域 097
7.2.5 移动Surface对象 098
实例7.1 通过方向键控制Surface对象的移动 098
7.2.6 子表面Subsurface 100
实例7.2 父子Surface之间的共享特性 101
7.2.7 获取Surface父对象 102
实例7.3 通过人类继承关系模拟Surface父子对象关系 103
7.2.8 像素访问与设置 104
7.2.9 尺寸大小与矩形区域管理 105
7.3 Rect 对象 107
7.3.1 创建Rect对象 107
7.3.2 拷贝Rect 对象 109
7.3.3 移动Rect对象 109
7.3.4 缩放Rect对象 110
7.3.5 Rect对象交集运算 111
7.3.6 判断一个点是否在矩形内 112
7.3.7 两个矩形间的重叠检测 112
实例7.4 矩形间的重叠检测 113
7.4 综合案例——跳跃的小球 116
7.5 实战练习 122

第8章 精灵的使用 123
8.1 精灵基础 124
8.1.1 精灵简介 124
8.1.2 精灵的创建 124
实例8.1 创建简单的精灵类 124
8.2 用精灵实现动画 126
8.2.1 定制精灵序列图 126
8.2.2 加载精灵序列图 126
8.2.3 绘制及更新帧图 128
实例8.2 奔跑的小超人 129
8.3 精灵组 132
8.4 精灵冲突检测 133
8.4.1 两个精灵之间的矩形冲突检测 133
8.4.2 两个精灵之间的圆冲突检测 134
8.4.3 两个精灵之间的像素遮罩冲突检测 136
8.4.4 精灵和精灵组之间的矩形冲突检测 137
8.4.5 精灵组之间的矩形冲突检测 137
8.5 综合案例——小超人吃苹果 138
8.6 实战练习 141

第9章 音频处理 142
9.1 设备的初始化 142
9.2 声音的控制 143
9.2.1 加载声音文件 143
9.2.2 控制声音流 144
实例9.1 开始播放音乐 146
实例9.2 设置与获取音乐播放位置 148
实例9.3 自动切换歌曲 150
9.3 管理声音 152
9.3.1 Sound对象 153
实例9.4 使用Sound对象播放声音 154
9.3.2 Channel对象 156
实例9.5 音量的分别控制 158
9.4 综合案例——音乐播放器 161
9.5 实战练习 166


第2篇 案例篇
第10章 Flappy Bird 167
10.1 案例效果预览 168
10.2 案例准备 168
10.3 业务流程 169
10.4 实现过程 169
10.4.1 文件夹组织结构 169
10.4.2 搭建主框架 170
10.4.3 创建小鸟类 171
10.4.4 创建管道类 174
10.4.5 计算得分 177
10.4.6 碰撞检测 178

第11章 玛丽冒险 181
11.1 案例效果预览 181
11.2 案例准备 183
11.3 业务流程 183
11.4 实现过程 184
11.4.1 文件夹组织结构 184
11.4.2 游戏窗体的实现 184
11.4.3 地图的加载 185
11.4.4 玛丽的跳跃功能 187
11.4.5 随机出现的障碍 190
11.4.6 背景音乐的播放与停止 192
11.4.7 碰撞和积分的实现 194

第12章 推箱子游戏 197
12.1 案例效果预览 198
12.2 案例准备 199
12.3 业务流程 199
12.4 实现过程 200
12.4.1 文件夹组织结构 200
12.4.2 搭建主框架 200
12.4.3 绘制游戏地图 203
12.4.4 用键盘控制角色移动 210
12.4.5 判断游戏是否通关 215
12.4.6 记录步数 216
12.4.7 撤销角色已移动功能 217
12.4.8 重玩此关的实现 219
12.4.9 游戏进入下一关 220

第13章 飞机大战 223
13.1 案例效果预览 223
13.2 案例准备 224
13.3 业务流程 224
13.4 实现过程 225
13.4.1 文件夹组织结构 225
13.4.2 主窗体的实现 225
13.4.3 创建游戏精灵 227
13.4.4 游戏核心逻辑 229
13.4.5 游戏排行榜 233

第14章 智力拼图 236
14.1 案例效果预览 237
14.2 案例准备 238
14.3 业务流程 239
14.4 实现过程 240
14.4.1 文件夹组织结构 240
14.4.2 搭建主框架 240
14.4.3 绘制游戏主窗体 242
14.4.4 移动游戏空白方格拼图块 250
14.4.5 统计空白方格拼图块移动步数 254
14.4.6 判断拼图是否成功 255
14.4.7 使用csv文件存取游戏数据 258
14.4.8 绘制游戏结束窗体 259

第15章 画图工具 265
15.1 案例预览效果 265
15.2 案例准备 266
15.3 业务流程 267
15.4 实现过程 267
15.4.1 文件夹组织结构 267
15.4.2 菜单类设计 268
15.4.3 画笔类设计 270
15.4.4 窗口绘制类设计 273
15.4.5 画图工具主类设计 274

发送电子邮件联系我们