分享

自己编程设计游戏,这大概是孩子摆脱游戏瘾的最酷方法

 长沙7喜 2017-07-25




某天,家庭聚会。晚饭后,我躺在沙发看电视。


姐姐对我抱怨道:“你看咱家镇宇,一天到晚玩游戏,都是跟你学的!”


我转头一看,外甥正抱着手机玩得入迷,然后问姐姐:“孩子今天玩多久了?”其实我并不反对孩子玩游戏。因为我小时候也是这样喜欢玩游戏,并一直因为对游戏的热爱,最终走上了软件开发的职业。


 姐姐继续道:“已经快一个小时了,说了好几次都放不下手机。”


“嗯,那是有点多了。”我思考着,如果只是单纯地玩游戏,恐怕学不到多少有用的东西,但如果结合我的专业,给他灌输一些编程的思想呢?


说做就做!我到外甥身边,看了一小会儿他正在玩的游戏,等他一局完成,对他说道:“镇宇,你玩游戏那么厉害,那有没有兴趣做一个游戏出来给别的同学玩呢?”


“做游戏?”他有点迷糊地抬起头看着我。


我肯定地点点头,“嗯,我教你做游戏,然后你放到手机上,给你的同学玩……”我话还没说我,只见外甥双眼放光,小脑袋像是捣蒜一样快速点头,“好啊好啊!”


小孩子快乐的眼神,好明亮。

 

我趁热打铁道:“那我们周末一起来做游戏,你玩过了那么多游戏,现在就开始计划一下,做一个什么样的游戏?”


“要得!要得!”只见孩子把手机还给他妈妈,然后飞奔上楼。


很快又拿了他的小书包下来,拿出笔和纸开始写写画画。


我得意地大笑。


 

回到家,我就开始思考要怎么样教他学习编程。学习制作一款简单的游戏,首选语言当然是Python。因为一直有一句话叫做:人生苦短,我用Python(Life is short. You need Python)。


Python最初就是以教育为目的设计出来的编程语言,非常简洁优美,适合孩子入门。国内外很多学校开设的编程课程,也将Python作为入门语言来教授。下图是七种最受欢迎的语言在美国39所高校中的使用情况:



现在很多儿童机器人编程大赛采用的核心语言也是Python。各大儿童机器人玩具厂家,也推出了基于Python的编程接口。


美国的一位专家还特别和自己的儿子一起写了一本书,来讲诉作为父亲如何与孩子一起学习Python编程,此书获得国内外一致好评,豆瓣评分更是高达8.5分。


而且,近年来大数据、云计算和人工智能的兴起,给了Python更多的优势,要知道,前段时间横扫围棋界的人工智能阿尔法狗(AlphaGo)的核心算法库TensorFlow就是在Python下运行的。而云计算和大数据领域,Python也处于领导地位。所以最近几年Python的排名一直在上升。


更多的,Python还是一门重要的胶水语言,所谓胶水语言,就是用来黏合各种开发工具和语言。这也就意味着,Python不但适合入门,更适合作为职业规划,成为参与未来科技变革的核心力量。简单来说,如果我外甥学会了Python,他以后的职业生涯,肯定会有所加分,甚至是完全不同。


而兴趣,却是最好的老师,既然Python那么多好处,从小培养外甥的兴趣,不是更好么?

 

周末,外甥给我打电话,问我是否有空履行之前的约定。


那必须是有空啊。


然后周六他就自己一个人坐车到了我家,我们开始讨论。


到家,休息好了,我问他:“你想做一个什么游戏呢?”


他认真地思考了一下,回答我说:“我们先做一个简单点的游戏”。非常的睿智啊,才9岁的孩子,很清楚复杂的事情要从简单的部分开始。


其实我心里早想好了思路,先给他讲解最简单的程序的逻辑,让他有一点成就感,这就是今天的目标。


所以,我告诉他我们今天先做一个只有文字的游戏,叫做钓鱼。


让我吃惊的是,他立刻开始规划:要有很多种鱼,钓到鱼可以卖钱,然后可以用钱买道具……


好吧,我理解为他玩过类似的游戏,有一些概念了。


然后,我引导他说:那要不要设计一部分机会钓不到鱼呢?比如钓起来一个炸弹?


然后我就给他讲了一个解锁炸弹的数字迷你游戏,没错,就是经典的猜数字游戏:电脑出一个随机数字,玩家来猜,猜对了就炸弹解除,猜错了就提示数字太大还是太小。如果超过3次没猜中,炸弹就爆炸了。


我想可以让他在玩游戏的过程中,做几个简单的数学题。并且可以理解编程的最基本的元素——分支和循环,我给他画了个图解释,告诉他绿色的小箭头就是分支,虚线的大箭头就是循环。程序从粉色框开始,一个框一个框地执行,检测到玩家输入的内容就去比对密码。


如果密码正确就解除,如果密码不正确就继续判断是否超过三次,如果超过三次就爆炸,如果低于三次就循环提示输入密码。


这个过程中,我给他讲解了Python的基本的赋值、分支和循环,没有讲得很细,主要以实现功能和灌输概念为主。


接下来,在这个游戏基础上扩展,就变得较为容易了。


我再给外甥讲解了一下关于对象的概念,并引入了类来作为游戏中各个元素的核心,当然,都是以实用性为主,并没有深入讲解。毕竟现在主要培养的是他的兴趣和对程序的逻辑的理解。我给他画了下面这个图,用来讲解整个游戏的逻辑:

游戏开始后,先要输入玩家的名字,然后根据名字去查找游戏进度,如果有游戏进度的,就读取进度,否则就全新开始游戏。


接下来就是一个游戏菜单开始的循环体,根据选择执行不同的指令。


如果选择钓鱼,就开始展示随机的钓鱼结果,如果结果是钓到炸弹,那就启动之前的那个猜数字的炸弹小游戏。


成功地引起了外甥对编程的兴趣,万里长征的第一步已经完成了。我和他一下午就耗在这个小游戏里,看着小家伙在纸上快乐地写写画画,规划着游戏的内容,设计鱼的种类,金币数量等等。


然后和我一起编写代码,调试代码,听我讲解代码的原理和运行流程,无比专注,感觉比他打游戏还要快乐。


我当然也很快乐,享受和孩子一起的悠闲的时光的同时,让他接触了编程,学了一些以后会对他人生起到正面积极作用的技能。


因为整个游戏比较小,而且并没有图形部分,所以几个小时已经可以看到成效了(PS:这也是最重要的,最开始学编程,一定要让他快速地获得成就感,不然时间太长就容易有挫折感,造成兴趣流失),电脑上的运行效果如下:



当然,为了让他可以跟小伙伴一起玩(炫耀),我用了一个叫作QPython的手机App来运行刚才编写的代码:




因为我用的是Python 3,所以选择了QPython3的版本来在手机上运行,



最后,奉上完整代码,请在Python3下运行:



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多