“人生苦短,我用Python”。这句戏言真实反映了Python语言的江湖地位。那么,要快速上手和进阶Python编程,有什么好途径呢?我推荐游戏开发。
游戏开发激发学习热情 作为一名拥有十余年程序设计教学经验的老师,我清楚地记得,当告诉学生们课程任务有俄罗斯方块游戏开发的时候,部分同学在课堂上热切地喊出“好耶”,部分同学鼓起掌来,大家一副跃跃欲试的神情。
那是我在2014级软件工程专业教学改革试点班中做的尝试。开设的课程叫作“大学计算机基础B”,一共16周,64学时。前面第11周讲授计算机基础和Python编程,后面5周学生学习C/C++(因后续课程需要)。后5周的大作业就是基于Win32 API开发俄罗斯方块游戏程序。我多少有些担心学生是否做得下来,然而到验收的那一天,我有些吃惊。大部分同学的作品都明显超出了作业要求的标准。
尽管有很多因素(比如强有力的教辅)促成了这样的好结果,但我认识到一个重要的原因是“激发了学生们的学习热情”。是的,游戏开发有这个效果。有学生告诉我,他把自己的作品发布到高中同学群,让同学们玩玩,结果赢得赞誉一片。我察觉到了学生嘴角露出了小小的得意。有学生开夜车编程序,搞到凌晨两三点都不想去睡觉。所以呢,我百分百肯定,游戏开发是学习Python编程的好途径。
用Python开发游戏的门槛是很低的。例如,实现显示游戏窗口(见图1)的代码,不包括空行和注释行的话,只需要15行。如果你想亲自验证一下,那么请阅读我发布的代码文件,然后数一数其中有实际功能的代码行数。我以前用VC++开发图形界面程序的时候,实现显示游戏窗口的代码有一大堆,跨好几个文件,让人望而生畏。用Python的话,基于Pygame模块,15行代码就搞定了。
图1 游戏窗口
无论是Python入门,还是Python进阶,学习者都有适合的游戏开发项目可供选择。正是这样,Python语言成为教孩子学编程的优先选择。教小孩学编程,可不能一本正经的,必须用好招吸引他们,激发他们。游戏开发就是常用的招术。以《教孩子学编程(Python语言版)》一书为例,该书一开头就教孩子绘制彩色螺旋线,接着教孩子编写小游戏,然后教孩子编写具有动画、鼠标控制的游戏。我建议初学者可以自降身份去学一学这本书。如果你想编写有更多挑战的游戏,那么建议你学习《Python游戏编程快速上手》一书或者《Python游戏编程入门》一书。
还想要更高一点的挑战?建议你尝试跟着我学习“用Python开发俄罗斯方块”。你可以访问我在GitChat开设的达人课。该教程面向的是已有Python编程基础的、想进一步提高Python编程能力的开发者。教程设计采用“小步走”策略,一共有22篇文章。每一篇都是一个完整的实验步骤,实现一个功能。在每一篇文章中,首先指出实验步骤的目标,也就是指出完成整个步骤后,程序运行效果是什么样的。接着,描述实验步骤的实现思路和任务。然后,逐个任务地讲解具体的做法,也即指出哪里要修改/补充什么代码,改写后的代码是什么样的,为什么要这样做。最后,给出该实验步骤完成后的源代码版本的Github链接,供浏览或下载。到最后,我们将实现能供家人、朋友或同学实际玩一玩的俄罗斯方块游戏。图2是运行界面的截屏。我上传的视频呈现了该程序的运行效果。
图2 俄罗斯方块游戏界面
有没有开源的游戏程序呢?有的,知乎上的一篇文章推荐了不少开源项目。其中推荐的 BombSquad是一个 3D 炸弹人游戏,界面(见图3)还是挺酷炫的。
图3 3D炸弹人游戏的界面
寻求帮助。我遇到问题的时候,首先做的是厘清问题是什么。接着,我会在网络引擎的搜索框内输入描述问题的关键词,期望得到解决办法的线索。这帮了我的大忙。最后,我偶尔会到论坛上提问。CSDN论坛就是一个好选择。
最重要的是,动手干!