Python进阶的好途径——游戏开发

  “人生苦短,我用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炸弹人游戏的界面

从游戏开发中能学到什么

  1. 开发者有机会接触到千行代码量级的程序。初级开发者编写的程序一般只有几十行代码。要指出的是,编写几十行代码的程序和编写千行代码的程序,完全不是一个量级的事。至少,千行代码这一现实将促使开发者养成使用函数的习惯。我上编程基础课的时候,由于编写的程序只有几十行代码,学生不愿意用函数,你再苦口婆心地讲道理也没用。
  2. 游戏开发要求开发者采用良好的结构来组织代码。程序的代码量上去了,会促使开发者使用多个模块文件,甚至使用类与对象来编程。
  3. 从游戏开发中,开发者将学习图形界面开发(GUI),理解事件驱动编程模型。这将会帮助开发者消除对软件的神秘感,有助于开发者开展更多的探索。
  4. 游戏开发会提高开发者的学习能力。例如,游戏开发会用到python标准库以及各种第三方库。这将促使开发者借助网络和手册,查询各个函数的用法,学习相关的概念和知识。一点一点地,开发者拥有更多知识,更强的学习能力。

游戏开发实践注意事项

  1. 切勿囫囵吞枣。不要这样做:照着书本或者教程敲(甚至复制)一遍代码,跑一遍程序就算完事了。你必须自己搞懂。无论是整体思路,还是一行代码内的细节,你都要吃透。怎样算吃透了程序?不借助书本或教程(借助手册查阅函数的用法是可以的),能正确地再写一遍程序。
  2. 采用“小步走”策略。下一步只实现一个小功能。实现完成后,检查运行效果。通过后再去完成下一个功能。
  3. 多用函数,多用函数,多用函数。把程序代码分解到多个模块文件。使用类和对象来组织代码。
  4. 寻求帮助。我遇到问题的时候,首先做的是厘清问题是什么。接着,我会在网络引擎的搜索框内输入描述问题的关键词,期望得到解决办法的线索。这帮了我的大忙。最后,我偶尔会到论坛上提问。CSDN论坛就是一个好选择。

    最重要的是,动手干!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值