新書推薦:
《
不被他人左右:基于阿德勒心理学的无压力工作法
》
售價:HK$
66.1
《
SDGSAT-1卫星热红外影像图集
》
售價:HK$
445.8
《
股市趋势技术分析(原书第11版)
》
售價:HK$
221.8
《
汉匈战争全史
》
售價:HK$
99.7
《
恶的哲学研究(社会思想丛书)
》
售價:HK$
109.8
《
不止江湖
》
售價:HK$
98.6
《
天才留步!——从文艺复兴到新艺术运动(一本关于艺术天才的鲜活故事集,聚焦艺术史的高光时刻!)
》
售價:HK$
154.6
《
双城史
》
售價:HK$
110.9
|
編輯推薦: |
针对零基础者,带领大家从零开始如何一步步的开发 Python 小游戏,此类书籍在市面上比较少见。游戏的选材都是市面上相对比较热门的小游戏,十分有趣味性和挑战性,并且很容易上手。本书知识结构由浅入深,可以将对Python变成感兴趣的读者带领上Python编程开发之路。每一关卡的*后均有奖励宝箱等待读者在挑战成功后开启!
|
內容簡介: |
本书内容主要介绍如何基于*的 Python 3.6 版本开发小游戏,全书分为 4 个相对独立的小游戏,难度上由浅入深。每一章节介绍一个游戏的完整开发过程,包括游戏介绍、文字说明、代码实现。同时,本书还会穿插对现有常用 Python 游戏第三方模块的介绍。本书语言活泼、形式新颖、寓教于乐,是一本可以让读者边玩边学的编程入门级科普书。
|
關於作者: |
车洪,本科毕业于南京理工大学电子信息工程专业,硕士毕业于中科院声学所信息与信号处理专业,在Intel业界工作多年,从事 GPU 驱动的开发,擅长Python语言编程设计。
|
目錄:
|
第1章 起步1
1.1 用Python编写游戏1
1.1.1 Python能否编写游戏程序1
1.1.2 Python能够编写的游戏类型1
1.1.3 Python游戏的性能1
1.1.4 使用Python编写游戏2
1.1.5 Pygame和Cocos2d2
1.2 搭建开发环境4
1.2.1安装Python4
1.2.2 安装PyCharm9
1.2.3 配置虚拟环境13
1.3 小结14
第2章 Pygame16
2.1 Pygame简介16
2.2 Pygame的安装16
2.3 Hello World18
2.4 基本概念20
2.5 窗口管理21
2.6 Surface对象23
2.7 图片加载26
2.8 图形绘制26
2.9 文字显示31
2.10再议屏幕显示35
2.11Rect对象37
2.12 事件处理42
2.13 Sprite52
2.14 碰撞检测57
2.15 音效与音乐60
2.16 小结64
第3章 《飞机大战》游戏66
3.1 项目介绍66
3.2 项目规划68
3.3 记录状态70
3.4 游戏窗口71
3.5 游戏循环72
3.5.1事件检测处理73
3.5.2 状态更新74
3.5.3 碰撞检测处理75
3.5.4 屏幕绘制76
3.6 加载图片77
3.7 背景79
3.8 我方飞机82
3.9 子弹85
3.10 敌方飞机87
3.11 按钮96
3.12 小部件98
3.12.1Logo98
3.12.2 记分牌100
3.12.3 暂停恢复按钮101
3.12.4 游戏结束提示框104
3.13 音乐与音效106
3.14 异常处理109
3.15 小结112
第4章 Cocos2d Ⅰ113
4.1 Cocos2d简介113
4.2 Cocos2d的安装113
4.3 Hello World115
4.3.1Hello World115
4.3.2 Hello Actions118
4.3.3 Hello Events121
4.4 基本概念125
4.5 坐标系127
4.6 director129
4.7 CocosNode131
4.7.1方法及属性131
4.7.2 常见派生类136
4.7.3 自定义派生类137
4.8 Scene138
4.8.1 常见派生类138
4.8.2 使用方法138
4.8.3 锚点与位置143
4.9 Layer145
4.9.1 常见派生类145
4.9.2 使用方法146
4.9.3 锚点与位置148
4.10 Sprite150
4.10.1 方法及属性150
4.10.2 使用方法153
4.10.3 锚点与位置155
4.11 Menu156
4.11.1 相关的类156
4.11.2 简单菜单157
4.11.3 多重菜单161
4.12 Action和Effect165
4.12.1Action165
4.12.2 Effect169
4.13 小结175
第5章 《俄罗斯方块》游戏176
5.1 项目介绍176
5.2 项目规划179
5.3 游戏窗口与菜单场景182
5.4 背景183
5.5 菜单动画185
5.6 菜单187
5.7 参数设置190
5.8 游戏场景191
5.9 HUD192
5.10 记录状态195
5.11 参数设置与状态更新196
5.12 游戏区域200
5.13 棋盘201
5.14 方块205
5.15 游戏主体控制215
5.15.1 创建棋盘215
5.15.2 绘制棋盘215
5.15.3 创建方块216
5.15.4 绘制方块217
5.15.5 方块移动旋转下落218
5.15.6 方块定时下落220
5.15.7 方块着陆221
5.15.8 游戏结束222
5.15.9 游戏通关224
5.16 异常处理225
5.17 小结227
第6章 Cocos2d Ⅱ228
6.1 Collision228
6.1.1 原理228
6.1.2 代码229
6.1.3 《猫吃老鼠》游戏235
6.2 Tiled maps239
6.2.1文件结构239
6.2.2 制作地图241
6.2.3 在代码中访问246
6.2.4 小球掉落(一)253
6.3 Map Colliders256
6.3.1原理256
6.3.2 代码258
6.3.3 小球落掉(二)262
6.4 自定义Action264
6.4.1Action类264
6.4.2 自定义一般Action265
6.4.3 自定义Instant Action266
6.4.4 自定义Interval Action267
6.5 自定义Event267
6.5.1Event268
6.5.2 预定义Event268
6.5.3 自定义Event269
6.6 图片集272
6.6.1 图片集简介272
6.6.2 图片分割272
6.6.3 示例274
6.7 动画275
6.7.1动画简介276
6.7.2 帧动画277
6.7.3 示例278
6.8 声音280
6.8.1 音效280
6.8.2 背景音乐281
6.9 Particle System283
6.9.1 使用Particle System283
6.9.2 自定义Particle System285
6.10 小结289
第7章 《超级马里奥》游戏290
7.1 项目介绍290
7.2 项目规划293
7.3 游戏窗口与菜单场景296
7.4 菜单背景297
7.5 菜单299
7.6 记录状态301
7.7 HUD302
7.8 提示场景304
7.9 提示层306
7.10 编辑地图308
7.11 游戏场景315
7.12 闪烁砖块316
7.13 图片分割与动画效果318
7.14 角色划分324
7.14.1Actor325
7.14.2 Mario326
7.14.3 Enemy327
7.14.4 Prop328
7.14.5 Cliff328
7.14.6 Coin329
7.14.7 Flag330
7.14.8 Brick330
7.15 角色移动332
7.15.1敌人移动332
7.15.2 道具移动334
7.15.3 马里奥移动336
7.16 游戏主体控制341
7.16.1 定义游戏层341
7.16.2 创建游戏角色341
7.16.3 主循环343
7.16.4 创建敌人344
7.16.5 更新计时器346
7.16.6 游戏结束346
7.16.7 游戏通关348
7.16.8 碰撞检测353
7.16.9 碰到地图障碍物354
7.16.10 碰到Sprite对象360
7.17 音乐与音效366
7.18 异常处理371
7.19 小结374
附录示例代码、相关工具及网络资源375
后记376
参考文献377
|
內容試閱:
|
1. 创作起因
在编写本书之前,笔者热衷于在网络上做技术分享,曾经发布过许多教程。由于一次线上游戏编程课程的机缘,清华大学出版社的编辑联系到了我,询问我能否编写一本以Python游戏编程为主题的书籍。由于笔者酷爱技术,同时热衷于分享,于是便欣然接受了这次颇为珍贵的邀请,并借此机会实现自己多年以来的写书梦。
为什么要写游戏编程?
相信许多编程初学者都有这样的困惑: 编程语言的语法太枯燥、太抽象了,根本不明白它们到底该怎么用;学了这么久还是停留在Hello World的初级阶段,太没意思了;到底有没有方法可以让编程变得简单、有趣、更容易上手?有啊,那就是从游戏编程开始!提到游戏编程,可能有读者会问: 游戏太难了吧,目前我还只是一个菜鸟,开发游戏对我来说是不是太早了?别把事情想得太复杂,《王者荣耀》是游戏,《俄罗斯方块》也是游戏,游戏有大有小,有的复杂,有的简单。学习编程可以从简单的小游戏开始,寓学于乐,乐趣使人进步,只有做感兴趣的事情,才可以让我们把对未知领域的恐惧转化为浓厚的兴趣与源源不断的动力,从而提高学习效率。
为什么选择Python?
随着人工智能、机器学习与数据分析的持续升温,业界内的众多领域都掀起了一阵Python学习之风。目前,Python已经成为继Java与C语言后第三大热门的编程语言,无数追随者都开始学习与使用这门新兴且古老的编程语言。Life is short,you need Python这句话似段子,又似箴言,鞭策着无数在Python学习道路上前行的人。作为一名资深C语言编程人员,笔者差不多在两年前开始关注Python,并很快被这门简约、高效、优雅的编程语言所吸引。也许会有读者不相信,从开始学习Python到完成本书的三大示例程序,笔者仅花费了一个月的时间。在这一个月内,笔者每天仅是抽出约两个小时的时间做这件事。由此可见,Python非常简单和易于上手,适合初学者作为第一门编程语言进行学习,这就是本书选择使用Python语言介绍游戏编程的原因。
为什么侧重于Cocos2d?
在寻找支持游戏的第三方Python库的过程中,笔者发现目前市面上的几乎所有Python游戏教程都是针对Pygame的,还没有使用Cocos2d编写Python游戏的书籍,甚至连中文译本都难觅,国外也很少有关于Cocos2d Python的书籍。除此之外,在对比了几大常用Python 2D游戏库后,笔者发现无论是功能、效果还是难易程度,Cocos2d都领先于其他2D游戏库,更加符合现代游戏的开发理念。因此,笔者非常想编写一本有关Cocos2d Python的系统教程,从而让更多的人认识、了解与使用Cocos2d这个充满魅力的游戏框架。不过,作为一本通用的Python游戏编程书籍,本书还是会简单介绍Pygame。
2. 读者对象
本书的读者对象有以下几类。
(1) 希望通过一些项目强化自身Python编程能力的人,本书提供了丰富的示例,可供读者参考和学习。
(2) 希望了解如何使用Python编写游戏程序的人,本书会介绍一些常用的Python 2D游戏库,并举例说明如何利用这些游戏库一步步地构建Python游戏程序。
(3) 希望系统学习Cocos2d Python的人,本书是目前国内唯一一本详细介绍Cocos2d Python的书籍。
(4) 所有对Python游戏编程感兴趣的人。
学习本书要求读者具备一定的Python语法基础。但是不用担心,本书并不要求读者一定是Python大师,哪怕你只是刚刚开始学习Python基础语法的新手,你也可以轻松地阅读本书。对,Python就是这么简单!
零基础入门Python游戏前言3. 本书内容
本书将介绍如何利用Python语言编写2D小游戏,并会对涉及的Python游戏库Pygame与Cocos2d进行详细讲解,包括其理论和大量示例代码。尤其是Cocos2d,本书会系统性地对其进行介绍,以弥补目前市面上关于Cocos2d Python的教程较少的遗憾。
本着多练习,多动手的原则,作为一本不枯燥的技术书籍,本书给出了大量示例程序,以供读者玩耍(参考)。在讲解理论知识后,本书会给出或大或小的示例代码,用来帮助读者巩固所学的理论,进而让读者快速上手Python游戏开发。另外,本书将通过理论 实战的方式带领读者实现三个相对完整的经典游戏项目,分别是《飞机大战》《俄罗斯方块》《超级马里奥》。除此之外,所有理论知识部分都会穿插许多小示例程序。
本书共分为7章和1个附录。
第1章对Python游戏开发的背景进行介绍,讲解如何搭建Python游戏的开发环境,为后续章节做铺垫。
第2章简要介绍Pygame的常用理论知识,通过示例程序讲解如何使用Pygame开发游戏。
第3章介绍第一个实例项目《飞机大战》游戏,并利用第2章中的Pygame理论一步步地开发这个游戏。
第4章介绍Cocos2d理论知识的基础部分,包括Cocos2d的搭建、安装以及示例程序。
第5章介绍第二个实例项目《俄罗斯方块》游戏,利用第4章中的Cocos2d基础理论知识一步步地开发这个游戏。
第6章介绍Cocos2d理论知识的高级部分,包括冲突检测、地图、动画、粒子系统等,并给出许多示例程序,以供读者参考。
第7章介绍第三个实例项目《超级马里奥》游戏,利用第6章中的Cocos2d高级特性一步步地开发这个游戏。
附录提供本书所有示例程序的源代码下载地址、相关工具和网络资源。
其中,第4章与第6章的内容合在一起将组成Cocos2d Python几乎全部的理论体系。
4. 如何阅读本书
总体来说,本书包括两大部分。
第一部分为第2章和第3章,该部分介绍Pygame以及如何利用Pygame开发《飞机大战》游戏。
第二部分为第4章至第7章,该部分介绍Cocos2d以及如何利用Cocos2d开发《俄罗斯方块》游戏与《超级马里奥》游戏。
以上两部分的关联度不高,读者可以分开阅读。对Pygame感兴趣的读者可以只阅读本书的第一部分;对Cocos2d感兴趣的读者可以只阅读本书的第二部分。当然,如果你对Pygame和Cocos2d均感兴趣,则可以通读全书,从而扩充自己在此领域的知识储备。
孔子曰: 学而不思则罔,思而不学则殆。本书给出大量示例程序的目的是让读者多动手、勤练习,在实践中不断思考,从而更加灵活地运用所学的知识。因此,在阅读本书时,笔者强烈建议读者时刻跟随教学的节奏,从搭建开发环境开始,把书中的所有示例程序,尤其是三个实例项目都自己实现一遍。如果遇到难以理解的部分,则可以在附录中下载相应示例程序的源代码,进行参考与比对。当然,示例程序只是实现功能的方式之一,读者也可以将自己的思维发散,在示例程序的基础上进行改进,从而让自己的程序更加完美。
除此之外,本书也可以作为Pygame与Cocos2d的工具书。本书对Pygame的常用部分以及Cocos2d的绝大部分内容都进行了详细介绍。
5. 本书特色
1 理论 实战往复循环。
讲解一个理论后,就会有一个实战项目等着你,以此往复循环,快速提高读者的实力。
2 三个经典游戏项目。
本书详细介绍《飞机大战》《俄罗斯方块》《超级马里奥》这三个经典游戏项目的开发过程。
3 大量示例程序。
本书给出大量示例程序,其源代码均可下载。
4 关于Cocos2d Python的系统性书籍。
国内第一本介绍Cocos2d Python的系统性书籍,本书涵盖Cocos2d Python的几乎全部理论体系。
5 详细介绍Pygame的常用模块。
关于Pygame的内容几乎涵盖其所有常用部分,凭借这些知识,读者可以轻而易举地创建一些普通的Pygame小游戏。
6 开发环境的普适性。
提供的所有示例程序均基于Python 3.8.0版本,并使用目前流行的PyCharm作为IDE,且所有代码在Linux、Windows、macOS系统上均已测试通过。
6. 勘误与支持
由于笔者水平有限,书中难免存在疏漏或不妥之处,恳请读者给予理解、批评和指正。
此外,读者也可以关注笔者的GitHub主页请扫描下方二维码,笔者会及时就本书示例代码中存在的问题进行更新。同时,欢迎广大读者参与本书示例程序的建设,对于代码中存在的问题及有待改进或完善的地方,均可以在对应的代码仓库中提出Issues或Pull requests。
最后,期待收到并真诚感谢读者的反馈。
笔者2020年6月
笔者的GitHub主页
|
|