前言
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就是这么简单!
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主页