正文

从游戏到编程

(2018-04-21 05:53:26) 下一个

从上世纪八十年代计算机的广泛应用,到今天平板电脑与智能手机的普及,软件系统开发在其发展过程中起着愈来愈突出的作用,各种软件系统层出不穷,不同领域软件应用方兴未艾。把学习计算机知识,更进一步学习计算机编程作为一种小孩的计算机入门教育,也成了今天许多家长们的不二选择。选用何种语言学习计算机编程,众说纷纭,不一而足。对中小学青少年,把编程与游戏结合起来,不失为学习编程的一种方法。当前比较流行的游戏编程工具有Python,Scratch等,前者专业性強,作为小孩的计算机编程启蒙教育起点稍高,后者入门简单,编程图形化,易于为学前与小学生们接受。但这些编程训练因自上而下,从编程到游戏,通过编程构造游戏,而不是从游戏到编程,通过游戏学习编程,不足以了解计算机的整体构架,不能让初学者形成一个计算机运行完整的图象,直接了解机器本身的逻辑功能。这里建议一种不同的学习思路,即从游戏到编程,从小孩所熟悉的单机游戏开始,将游戏机程序植入到PC计算机上,对游戏进行适当修改扩充,进行所谓的ROM Hacking,对原游戏程序(ROM Image)采用汇编语言修改扩充及逻辑运算编程。这种取向,虽看起来也是起点较高,其实不然。这样的做法一方面可以直接了解基本的游戏编程特点,另一方面能够从开始就比较深刻理解计算机系统的构架与逻辑功能,若以计算机科学为其发展方向,则对今后的有关计算机原理等专业学习大有裨益。

家有游戏娃,大概最先接触的都是家用电子游戏机。以任天堂为例,其家用游戏机有超级任天堂(SFC),任天堂64(N64),Wii等系列,掌上游戏机则有Game Boy,任天堂DS系列等产品。此外还有便携式家用游戏机任天堂Switch。自1983年红白机发售起至2018年初,任天堂已在全球售出超过45亿份游戏软件,超过7.1亿台游戏主机(包括家用游戏机和掌上游戏机),与索尼、微软一起名列全球主机游戏市场占有率前三名。更重要的是,无论是游戏本身,或是haking工具,任天堂游戏均有众多的在线支持。如你的小孩有过玩任天堂游戏机,例如风麾一时的超级马里奥世界(Super Mario World)的经历,而且乐此不疲,那就问问他们除了玩游戏过关斩将,是否研究过如何在游戏中找出暗藏机关,改变入关途径,如何对现有的游戏程序在PC机上进行修改与扩充加入新的图象,关卡,音乐等等,如何更新游戏。如果肯定的话,告诉他们最佳的方法就是以该游戏为蓝本,来一个ROM hacking,学习用汇编语言编程,由此激发小孩学习计算机原理及编程的兴趣,而PC机上所需下载的,不外乎是模拟游戏机的操作平台(emulator),游戏软件(rom file),黑客套件(hacking suite),十六进制编辑器(hex editor),以及各种于游戏中植入汇编补丁的软件。

应该指出的是,这里论述从游戏到编程只是适合相对年龄段所玩的传统单机电子游戏,尤其是以任天堂为代表的单机游戏。当今电子游戏向大型化,多样化,网络化,以及在线多人游戏发展,使得众多青少年沉缅于此欲罢不能,这里所提倡的不是也不能成为矫治游戏成瘾的良方。传统单机游戏一般采用汇编语言,而现今各种在线游戏采用高级语言,但各类游戏均有讨论如何黑客(hacking),或者加入游戏附件(add-ons)的网站,完全可以由此加以引导进而学习各种编程,例如汇编,Java,C#,C++等等,取决于各人喜好,个人认为从单机电子游戏着手学习汇编比较简单直观也更有益处。当然学习编程不是小孩学习发展技能的唯一选项,如果能正确引导将其对游戏的兴趣与编程结合起来,也应该是一种提高技能的手段。

这里贴一个用汇编修改超级马里奥世界反地心引力的例子。

[ 打印 ]
阅读 ()评论 (3)
评论
HBW 回复 悄悄话 通过对毒品上瘾者的教育让其学习贩毒从而了解商业运作的普遍规律进而成为商人。很多家长在做梦,没有直面孩子成瘾的核心问题。
J_man 回复 悄悄话 直接下载个Unity3D或者Unreal Engine4,图形化界面,用C#或者C++,设计编程多平台发布都包括了。
诚信 回复 悄悄话 “学习用汇编语言编程,由此激发小孩学习计算机原理及编程的兴趣”

我本人是在大学里教汇编语言的, 这汇编语言(x86, MIPS etc)在藤校的大学生里都有很多人学着有困难,您这里的“对中小学青少年”,指的的是多大的孩子?

我的小孩现在五年级,他在7岁时(2年级)自己自学的Scratch, 一周后编了两个小游戏,在学校的lab给同学显摆一下,lab老师给录了像,几个老师惊讶不已,kept saying "It is amazing, you are amazing". 去年一个月时间学会了c++,现在正学习DirectX编程。因为图形学的需要,也在学习线性代数,也学了一些微积分。他每天在家里的学习时间大概少于20分钟。我感觉,他虽然远非天才,但天分好像比我好。但即使这样的孩子,我有时试图介绍涉及汇编语言的编程的内容,他都会很少有地说难懂。

您在这倡导“对中小学青少年”从汇编学起,is it realistic or feasible?

登录后才可评论.