学完 Python ,我需要编个游戏露两手

“人生苦短,我用 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 游戏编程快速上手》一书。

Python游戏编程快速上手 第4版

作者:[美]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)还是挺酷炫的。

从游戏开发中能学到什么

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

游戏开发实践注意事项

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

原文发布于微信公众号 - GitChat精品课(CSDN_Tech)

原文发表时间:2018-06-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玄魂工作室

近几年前端技术盘点以及 2016 年技术发展方向

Web 发展了几十个春秋,风起云涌,千变万化。我很庆幸自己没有完整地经历过这些年头,而是站在前人的肩膀上行走。Web 技术发展的速度让人感觉那几乎不是继承式的迭...

3143
来自专栏大数据钻研

从前端菜鸟到大神,看这一篇就够了

结合个人经历总结的前端入门方法,总结从零基础到具备前端基本技能的道路、学习方法、资料。由于能力有限,不能保证面面俱到,只是作为入门参考,面向初学者,让初学者少走...

7955
来自专栏知晓程序

抢先体验腾讯新产品,还能免费拿 iPhone?用这款小程序就可以!| 亲儿子 #22

如果你是企鹅家的死忠粉,或许也有过这样的烦恼:每次推出新功能都想要抢先体验,却又苦于不是内测用户,无法尝鲜。

1434
来自专栏大数据钻研

所有程序员都应该遵守的11条规则

我是一个倾向于生活在规则下的人。 现在,这些规则大部分是我本人为自己设立的-但它们依然是规则。 我发现为自己创建规则可以让我过得更好,因为这样做可以提前决定一些...

3448
来自专栏全栈工程师成长之路

iOS开发学习路线

这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程.

3886
来自专栏java一日一条

最令程序员沮丧的 10 件事

软件开发是一个伟大的工作——和任何其他工作一样,它也有它的缺点。下面的10件事就是大多数程序员关于编程所无法苟同的。

1063
来自专栏大前端开发

从编程小白到全栈开发:先定一个小目标

经过我上一篇文章的介绍,你是不是感觉自己开始对程序猿这个群体感兴趣了,或已立志成为他们中的一员?

1074
来自专栏Java架构

工作2年半跳槽面试阿里,成功拿到offer,凭什么?面试题打动面试官的五大技能推荐课程体系:

2826
来自专栏LiveEdu在线科技教育平台

2017编程趋势预测:10大技术大热,10大技术遇冷

在编程世界,流行的是科学,严谨和精确的准则。这不是说编程是一种缺乏趋势的行业。不同的是,由于编程重视的是高效,用户化和使用方便,因此编程技术需要不断更新换代。那...

32410
来自专栏互联网杂技

结合个人经历总结的前端入门方法

结合个人经历总结的前端入门方法,总结从零基础到具备前端基本技能的道路、学习方法、资料。由于能力有限,不能保证面面俱到,只是作为入门参考,面向初学者,让初学者少走...

4026

扫码关注云+社区

领取腾讯云代金券