“人生苦短,我用 Python”。
这句戏言真实反映了 Python 语言的江湖地位。
那么,要快速上手和进阶 Python 编程,有什么好途径呢?
我推荐游戏开发。
作为一名拥有十余年程序设计教学经验的老师,我清楚地记得,当告诉学生们课程任务有俄罗斯方块游戏开发的时候,部分同学在课堂上热切地喊出“好耶”,部分同学鼓起掌来,大家一副跃跃欲试的神情。
那是我在 2014 级软件工程专业教学改革试点班中做的尝试。开设的课程叫作“大学计算机基础B”,一共16周,64学时。
前面第11周讲授计算机基础和 Python 编程,后面5周学生学习C/C++(因后续课程需要)。
后5周的大作业就是基于 Win32 API 开发俄罗斯方块游戏程序。我多少有些担心学生是否做得下来,然而到验收的那一天,我有些吃惊。大部分同学的作品都明显超出了作业要求的标准。
尽管有很多因素(比如强有力的教辅)促成了这样的好结果,但我认识到一个重要的原因是“激发了学生们的学习热情”。
是的,游戏开发有这个效果。有学生告诉我,他把自己的作品发布到高中同学群,让同学们玩玩,结果赢得赞誉一片。
我察觉到了学生嘴角露出了小小的得意。有学生开夜车编程序,搞到凌晨两三点都不想去睡觉。所以呢,我百分百肯定,游戏开发是学习 Python 编程的好途径。
用 Python 开发游戏的门槛是很低的。例如,实现显示游戏窗口的代码只需要15行。表1给出的代码实现了显示游戏窗口功能,程序运行效果见图1。表1中一共有28行代码,除去空行和注释行后是15行。
我以前用 VC++ 开发图形界面程序的时候,实现显示游戏窗口的代码有一大堆,跨好几个文件,让人望而生畏。用 Python 的话,基于 Pygame 模块,15行代码就搞定了。
import sysimport pygamedef main(): #初始化pygame。启用Pygame必不可少的一步,在程序开始阶段执行。 pygame.init() #创建屏幕对象 screen = pygame.display.set_mode((1200, 900) ) #分辨率是1200*900 pygame.display.set_caption("俄罗斯方块") #窗口标题 #屏幕背景色 bg_color = (230, 230, 230) #游戏主循环 while True: #监视键盘和鼠标事件 for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() #设定屏幕背景色 screen.fill(bg_color) #让最近绘制的屏幕可见 pygame.display.flip()if __name__ == '__main__': main()
无论是 Python 入门,还是Python进阶,学习者都有适合的游戏开发项目可供选择。正是这样,Python 语言成为教孩子学编程的优先选择。
教小孩学编程,可不能一本正经的,必须用好招吸引他们,激发他们。游戏开发就是常用的招术。
以《教孩子学编程(Python语言版)》一书为例,该书一开头就教孩子绘制彩色螺旋线,接着教孩子编写小游戏,然后教孩子编写具有动画、鼠标控制的游戏。
我建议初学者可以自降身份去学一学这本书。如果你想编写有更多挑战的游戏,那么建议你学习《Python 游戏编程快速上手》一书。
作者:[美]Al Sweigart(斯维加特)
当当 广告
购买
还想要更高一点的挑战?
建议你尝试“用 Python 开发俄罗斯方块”。
该教程面向的是已有 Python 编程基础的、想进一步提高 Python 编程能力的开发者。教程设计采用“小步走”策略,一共有22篇文章。
每一篇都是一个完整的实验步骤,实现一个功能。在每一篇文章中,首先指出实验步骤的目标,也就是指出完成整个步骤后,程序运行效果是什么样的。接着,描述实验步骤的实现思路和任务。
然后,逐个任务地讲解具体的做法,也即指出哪里要修改/补充什么代码,改写后的代码是什么样的,为什么要这样做。
最后,给出该实验步骤完成后的源代码版本的 Github 链接,供浏览或下载。到最后,我们将实现能供家人、朋友或同学实际玩一玩的俄罗斯方块游戏。图2是运行界面的截屏。我上传的视频
([http://www.iqiyi.com/w_19rze50865.html](http://www.iqiyi.com/w_19rze50865.html))呈现了该程序的运行效果。
有没有开源的游戏程序呢?
有的,知乎上的一篇文章推荐了不少开源项目(https://www.zhihu.com/question/25960850)。
其中推荐的 BombSquad 是一个 3D 炸弹人游戏,界面(见图3)还是挺酷炫的。