趣学Python游戏编程pdf下载pdf下载

趣学Python游戏编程百度网盘pdf下载

作者:
简介:本篇主要提供趣学Python游戏编程pdf下载
出版社:清华大学出版社
出版时间:2020-06
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

内容简介

  《趣学Python游戏编程》是高校教师多年开发经验的结晶之作,深入浅出地讲解使用Python语言进行游戏开发,帮助读者快速掌握游戏设计的基本原理和方法,同时提高应用Python语言的编程能力。
  《趣学Python游戏编程》精选十个游戏案例,涵盖不同的游戏类型,每一章围绕一个经典游戏案例展开,并突出一个游戏编程的主题。
  《趣学Python游戏编程》涉及的主要知识点有游戏循环的原理、鼠标及键盘事件处理、碰撞检测及处理、随机数的运用、定时器的使用、游戏场景的滚动、角色动画的播放、音效及音乐的播放、缓动效果、游戏关卡设计、游戏人工智能的原理及运用等。
  《趣学Python游戏编程》将Python语法知识及常用的编程技巧糅合在各个游戏案例中介绍,为读者展示Python语言的实际运用场景。
  《趣学Python游戏编程》内容安排合理,架构清晰,注重理论与实践相结合,适合作为零基础学习Python开发初学者的教程,也可作为本科院校及大专院校的教材,还可供职业技术学校和各类游戏培训机构使用。
  《趣学Python游戏编程》特点:
  内容丰富实用。不仅包括Python语言的基础知识,完整展示在各种游戏类型中高效地综合应用开发技术和方法,而且注重知识的实用性。
  真正从零基础开始。分任务、分步骤地介绍各个游戏案例,展示游戏从无到有的完整设计过程。
  理论与实践相结合。不仅介绍各种技术的基本应用和实现,而且讨论多种实际应用场景,帮助读者真正理解并应用到实际开发中。

作者简介

何青,湖南文理学院计算机教师,毕业于中山大学。从事计算机游戏设计课程教学十余年,教学经验丰富,教学成果显著,主持教育部产学合作协同育人项目“计算机游戏设计课程教师技能培养”,发表游戏设计教学研究论文多篇,出版游戏设计图书三部:《游戏程序设计教程》《Java游戏程序设计教程》《Java游戏开发实践:Greenfoot编程快速入门》。

内页插图

目录

目录

第 1章 神奇的游戏循环:弹跳小球 ··· 1
1.1 准备工作 ································· 1
1.1.1 选择合适的开发工具 ············· 1
1.1.2 设置开发环境 ······················ 2
1.2 从何处开始 ······························ 3
1.2.1 创建程序窗口 ······················· 3
1.2.2 改变窗口大小和颜色 ·············· 5
1.2.3 显示图像 ····························· 7
1.3 建立游戏世界 ··························· 9
1.3.1 创建游戏场景 ······················· 9
1.3.2 创建游戏角色 ······················10
1.4 移动小球 ································11
1.4.1 改变小球坐标·······································11
1.4.2 游戏循环···················································································11
1.4.3 朝其他方向移动 ···················13
1.4.4 移动得快一些 ······················14
1.5 实现小球反弹 ··························14
1.5.1 检测小球的位置 ···················14
1.5.2 将小球反弹回来 ···················15
1.6 加入更多的小球 ·······················17
1.6.1 添加两个小球 ······················18
1.6.2 使用列表 ····························19
1.7 回顾与总结 ·····························21

第 2章用鼠标控制游戏:拼图 ········24 2.1
添加图片块 ·····························24
2.1.1 准备图片资源 ······················24
2.1.2 创建游戏场景 ······················25
2.1.3 用列表管理图片块 ················26
2.2 打乱图片块 ·····························27
2.2.1 使用随机函数 ······················27
2.2.2 将图片块显示出来 ················28
2.3 移动图片块 ·····························30
2.3.1 处理鼠标单击事件 ················30
2.3.2 选取图片块 ·························31
2.3.3 判断图片块能否移动 ·············31
2.3.4 采用模块化编程方法 ·············32
2.3.5 改变图片块的位置 ················33
2.3.6 减少程序的缩进层级 ·············33
2.4 实现游戏结束 ··························34
2.4.1 检查拼图是否完成 ················35
2.4.2 显示最后一张图片 ················36
2.4.3 播放声音效果 ······················37
2.4.4 显示文字信息 ······················38
2.5 回顾与总结 ·····························39

第 3章递归函数的威力:扫雷 ········42
3.1 创建方块阵列 ··························42
3.1.1 准备图片资源 ······················42
3.1.2 创建游戏场景 ······················43
3.1.3 生成方块阵列 ······················43
3.1.4 埋设地雷 ····························45
3.2 给方块插上旗子 ·······················46
3.2.1 使用鼠标右键来操作 ·············46
3.2.2 定义函数执行插旗操作 ··········47
3.3 打开方块 ································49
3.3.1 完善鼠标事件处理 ················49
3.3.2 获取周围的方格 ···················50
3.3.3 统计地雷数量 ······················52
3.3.4 递归调用打开方块函数 ··········52
3.4 判定游戏胜负 ··························54
3.4.1 游戏失败的处理 ···················54
3.4.2 游戏胜利的处理 ···················55
3.5 回顾与总结 ·····························57

第 4章用键盘控制游戏:贪食蛇 ·····60
4.1 创建场景和角色 ·······················60
4.1.1 创建游戏场景 ······················60
4.1.2 创建贪食蛇 ·························61
4.2 移动蛇头 ································62
4.2.1 处理键盘按键事件 ················62
4.2.2 让蛇头持续移动 ···················63
4.2.3 另一种键盘控制方式 ·············64
4.2.4 延缓贪食蛇的移动 ················65
4.2.5 旋转蛇头的图像 ···················66
4.2.6 使用字典类型 ······················68
4.3 添加食物 ································69
4.3.1 让食物随机出现 ···················69
4.3.2 让贪食蛇“吃”食物 ·············70
4.3.3 增长贪食蛇的身体 ················71
4.4 实现游戏结束 ··························74
4.4.1 判断贪食蛇碰到窗口边界 ·······74
4.4.2 判断蛇头碰到自己身体 ··········74
4.5 回顾与总结 ·····························76

第 5章随机数的妙用:打字 ············79
5.1 创建一个字母气球 ····················79
5.1.1 创建游戏场景 ······················79
5.1.2 创建气球角色 ······················80
5.2 添加多个气球 ··························81
5.2.1 创建多个气球角色 ················81
5.2.2 随机生成气球的坐标 ·············83
5.2.3 随机生成气球的速度 ·············85
5.2.4 随机生成气球的字母 ·············87
5.3 实现打字功能 ··························89
5.3.1 匹配字母的按键 ···················89
5.3.2 消除气球 ····························89
5.3.3 修补游戏的 Bug ···················92
5.4 完善游戏规则 ··························94
5.4.1 添加游戏积分 ······················94
5.4.2 实现游戏倒计时 ···················95
5.4.3 判定游戏结束 ······················97
5.5 回顾与总结 ·····························98

第 6章碰撞检测及处理:打砖块 ··· 103
6.1 创建场景及角色 ····················· 103
6.1.1 创建游戏场景 ···················· 103
6.1.2 创建游戏角色 ···················· 104
6.2 让角色动起来 ························ 106
6.2.1 移动挡板 ·························· 106
6.2.2 移动小球 ·························· 107
6.3 处理角色间的碰撞 ·················· 110
6.3.1 碰撞检测的原理 ················· 110
6.3.2 小球与挡板的碰撞 ·············· 112
6.3.3 小球与砖块的碰撞 ·············· 114
6.4 完善游戏规则 ························ 116
6.4.1 设置游戏积分 ···················· 117
6.4.2 添加生命值 ······················· 117
6.4.3 实现游戏结束 ···················· 118
6.5 回顾与总结 ··························· 120

第 7章让游戏更加生动: Flappy Bird ······················ 124
7.1 创建游戏场景 ························ 124
7.1.1 设置背景图像 ···················· 124
7.1.2 滚动背景图像 ···················· 126
7.2 添加障碍物 ··························· 128
7.2.1 设置地面 ·························· 128
7.2.2 设置水管 ·························· 129
7.3 添加小鸟 ······························ 131
7.3.1 创建小鸟角色 ···················· 131
7.3.2 模拟重力下的飞行 ·············· 132
7.3.3 播放飞行动画 ···················· 133
7.4 小鸟与障碍物的交互 ··············· 135
7.4.1 小鸟与地面碰撞 ················· 135
7.4.2 小鸟与水管碰撞 ················· 136
7.4.3 小鸟飞越水管 ···················· 137
7.5 设计图形用户界面 ·················· 139
7.5.1 显示 GUI图像 ··················· 139
7.5.2 单击“开始”按钮 ·············· 141
7.5.3 播放背景音乐 ···················· 141
7.6 回顾与总结 ··························· 142

第 8章实现复杂的移动:飞机大战 ·························· 146
8.1 创建游戏场景 ························ 146
8.1.1 设置背景图像 ···················· 146
8.1.2 滚动背景图像 ···················· 148
8.2 添加英雄战机 ························ 148
8.2.1 控制战机移动 ···················· 148
8.2.2 播放战机动画 ···················· 149
8.3 添加子弹 ······························ 151
8.3.1 实现子弹射击 ···················· 151
8.3.2 设置增强道具 ···················· 152
8.3.3 使用三角函数计算坐标 ········ 154
8.4 添加敌机 ······························ 157
8.4.1 设置缓动效果 ···················· 157
8.4.2 敌机与子弹的交互 ·············· 160
8.4.3 敌机与战机的交互 ·············· 161
8.5 完善游戏效果 ························ 165
8.5.1 设置 HUD ························ 165
8.5.2 播放背景音乐 ···················· 166
8.6 回顾与总结 ··························· 167

第 9章添加多个游戏关卡:推箱子 ····························· 173
9.1 创建场景和角色 ····················· 173
9.1.1 设置游戏关卡 ···················· 173
9.1.2 加载游戏关卡 ···················· 175
9.2 实现角色的交互 ····················· 177
9.2.1 控制玩家角色的移动 ··········· 177
9.2.2 处理玩家角色的碰撞 ··········· 178
9.2.3 处理箱子角色的碰撞 ··········· 179
9.3 添加新的关卡 ························ 181
9.3.1 从文件载入关卡 ················· 181
9.3.2 切换关卡 ·························· 184
9.4 完善游戏功能 ························ 186
9.4.1 重置关卡 ·························· 186
9.4.2 判定游戏结束 ···················· 187
9.5 回顾与总结 ··························· 188

第 10章人工智能的奥秘:五子棋 ···························· 193
10.1 创建棋盘和棋子 ···················· 193
10.1.1 绘制棋盘 ························ 193
10.1.2 设置棋子 ························ 195
10.2 执行走棋操作 ······················· 195
10.2.1 使用鼠标下棋 ·················· 195
10.2.2 交换下棋双方 ·················· 197
10.3 完善游戏规则 ······················· 199
10.3.1 判定棋局胜负 ·················· 199
10.3.2 添加悔棋功能 ·················· 202
10.4 实现人机对弈 ······················· 203
10.4.1 游戏中的人工智能 ············ 203
10.4.2 让计算机学会下棋 ············ 204
10.5 回顾与总结 ·························· 209

附录 A 配置开发环境 ···················· 215
附录 B Python基础语法参考 ········· 220

前言/序言

前 言
一方面,随着人工智能时代的来临,Python编程语言受到热捧,根据 IEEE发布的《2018年最热门的编程语言》,Python在整体排名中位居榜首。随之而来的是对 Python学习的巨大需求,国内高校纷纷开设 Python程序设计课程,而且从 2018年 3月起, Python被纳入全国计算机等级考试科目。中小学也顺应时代的潮流,相继开始进行 Python编程教学。 2018年初,浙江省出台了最新的信息技术课程改革方案, Python确定进入浙江省信息技术高考。北京和山东也将把 Python编程基础纳入信息技术课程和高考的内容体系。
另一方面,随着近年来游戏产业的急剧升温,游戏人才的缺口急剧增大,同时也催生了游戏设计的学习需求,越来越多的人开始学习游戏设计和编程,众多高校先后开设了游戏设计相关的专业及课程。然而游戏程序设计的门槛相对来说比较高,没有太多合适的学习工具让新手入门。关于游戏编程的书籍大多介绍的是专业级的开发工具(如 Unity3D、Cocos2D等),针对初学者的书籍凤毛麟角。
本书尝试将以上两种需求结合起来,即通过 Python语言来介绍游戏编程的基本原理和方法。一方面,可以为 Python语言学习者提供一个实践的平台,通过游戏的设计和编写来深入理解 Python语法,以此提高读者的实践应用能力,进而达到融会贯通的学习效果;另一方面,为游戏设计爱好者提供一个便捷的学习途径,利用 Python的简洁性来介绍游戏设计,可以尽量排除语法层面的障碍,从而方便读者理解及掌握游戏编程的基本原理和实现方法。

主要内容
本书精选了十个游戏案例进行介绍,涵盖了不同的游戏类型。为了让读者能够“趣学”,本书挑选的都是经典而有趣的游戏案例,同时在写作风格上尽量做到轻松有趣,以便最大程度地提高读者的学习兴趣和学习效果。
书中每个游戏案例都被赋予一个主题,内容围绕该主题展开。具体如下:
第 1章介绍弹跳小球游戏,主题为游戏循环的原理。通过设置游戏循环,实现了小球在游戏窗口四周弹跳的效果。
第 2章介绍拼图游戏,主题为鼠标事件处理。通过对鼠标的单击事件进行处理,实现了图片块的移动操作。
第 3章介绍扫雷游戏,主题为函数的递归调用。通过使用递归函数来打开方块,实现了方块的自动打开操作。
第 4章介绍贪食蛇游戏,主题为键盘事件处理。通过对键盘的按键事件进行处理,实现了贪食蛇的移动控制。
第 5章介绍打字游戏,主题为随机数的使用。通过为气球随机生成速度、位置及字母,展示了随机数在游戏设计中的奇妙作用。
第 6章介绍打砖块游戏,主题为碰撞检测及处理。通过对小球与挡板及砖块实施碰撞检测,实现了游戏角色之间的交互行为。
第 7章介绍 Flappy Bird游戏,主题为场景滚动和角色动画。通过滚动显示场景图像,以及为小鸟播放飞行动画,实现了栩栩如生的游戏画面。
第 8章介绍飞机大战游戏,主题为游戏角色的移动特效。通过为敌机设置缓动功能,实现了游戏角色复杂多变的移动效果。
第 9章介绍推箱子游戏,主题为游戏关卡的设计与实现。通过为推箱子游戏添加多个关卡,实现了游戏关卡的设置、加载和切换。
第 10章介绍五子棋游戏,主题为人工智能在游戏设计中的运用。通过为五子棋游戏加入人工智能算法,实现了人机对弈的功能。

本书特色
与时俱进。紧跟计算机技术及产业发展趋势,结合游戏开发、Python语言、人工智能等热点内容,充分满足大众对时兴技术的好奇心和求知欲。
结构清晰。每一章围绕一个经典游戏案例展开,并将案例拆分为几个小任务,然后分任务、分步骤地进行介绍,展示游戏从无到有的全过程。
组织合理。内容按照由易到难的顺序来组织,各章节涉及的知识点先后关联,每一章都会介绍一些新技能,然后在后面的章节中加以运用。
注重实践。将 Python语法知识及常用的编程技巧糅合到各个游戏案例中,以展示 Python语言的实际运用场景,从而达到学以致用的效果。
通俗易懂。采用生动有趣的语言,细致入微的描述,并辅以丰富翔实的图例,充分顾及初学者及低龄读者的阅读习惯。

学习建议
由于本书各章节的知识点在逻辑上先后关联,因此建议从第 1章开始,逐章节地进行学习。若实在对某个章节的案例感兴趣,也可以先学习该案例,当遇到不懂之处再去前面的章中寻找答案。若读者之前不熟悉Python 语言,则可以先看看附录部分关于Python 基础语法的介绍。
在学习本书的过程中,建议跟随着书本将代码亲手编写一遍。对于每个游戏案例的各个小任务,可以先试着自己动手实现,若遇到问题再参考书中的解决办法。而对于书中给出的练习,也希望读者能够认真地加以思考和解决。“纸上学来终觉浅,绝知此事要躬行”,若想真正提高编程能力,除了多动手实践没有其他捷径。

适用读者
本书受众面很广,不仅适用于大学生、青少年,还包括社会大众,甚至中小学生,用来满足其学习游戏设计的需求,以及提高Python 编程水平的需求。
若您对以下几个问题之一持肯定的答案,那么本书便适合您阅读。
您对计算机程序设计感兴趣吗?
您希望学习Python 编程语言吗?
若您有一定的Python 基础,希望进一步提高编程能力吗?
您想了解经典的小游戏是如何设计编写的吗?
您希望学习游戏编程技术来制作自己的游戏吗?

技术支持
由于作者水平有限,书中难免存在一些疏漏,敬请广大读者批评指正。对本书有任何疑问,可以通过清华大学出版社网站(www.tup.com.cn)与编辑沟通。
感谢家人、朋友及同事在本书的写作过程中给予的支持和关心,特别要感谢我可爱的女儿,作为最早接触书中游戏案例的人,她在乐此不疲地玩这些游戏的同时,也替我完成了大部分的测试工作。

作 者
于白马湖畔