游戏在编程语言教学中的应用

2018-06-11 11:15施玮炯刘广钟
现代职业教育·高职高专 2018年12期
关键词:教学

施玮炯 刘广钟

[摘要]以“编程思想入门”为教学案例,阐述在编程语言教学中如何使用CodeCombat这一游戏化教学平台培养学生的编程能力。旨在通过游戏让学生能够直观地建立计算机编程思维,同时让学生在游戏中学会JavaScript语言的基础语法。通过游戏的方式,不但能提高学生的兴趣,还能提升学生的实践动手能力和教学效果。

[关键词] 教学;计算机编程;JavaScript;CodeCombat;编程思维

[中图分类号]  G642                  [文献标志码]  A                       [文章编号]  2096-0603(2018)34-0284-02

一、引言

在日常生活中,计算机已经成为人们不可缺少的一种工具。互联网的应用无处不在,使计算机的应用更是广泛深入到日常生活的方方面面。因此,现在计算机及相关专业普遍开设了编程类课程。这类课程主要介绍了编程语言的语法、编程思维以及编程语言的应用等内容。培养学生编程思维贯穿整个教学过程,从语法教学开始,就需要通过相关的练习让学生逐步习惯编程思维。教授完语法后,还需要讲解语言的日常应用,让学生能通过应用语言更好地养成这种编程思维。

因此,编程思维的培养是编程类课程最核心的一个组成部分。笔者在编程类相关课程教学中发现培养编程思维存在诸多难点。它有别于其他计算机实践类课程,后者在课堂教学中可以通过大量练习达到融会贯通,然而,编程思维的培养涉及两个方面,一是编程语言的学习,二是编程思维的形成。

然而,编程类课程学习过程相对比较枯燥。教师在讲解语法时,按章节讲解相关语法,容易磨灭学生的学习热情;此外,教师如果不讲解语法直接传授编程思维,又会导致学生基础不扎实,教学效果难以保证。

二、游戏化编程教学

针对教学过程中出现的问题,我引入了游戏化编程来教授编程类课程。通过大量有趣的关卡让学生在课程入门阶段对语言的應用有一个比较直观的认识。将基于游戏的学习方式与传统学习方式相比较,区别显而易见:游戏能帮助学生更好地记住知识、集中精力,获得更大的成就感。

同时,游戏是鼓励交流、发现、试错的媒介。好的游戏能够让玩家学习到技能,游戏能促成“高效的奋斗”状态——该状态能激发积极性,把单调的学习过程变得生动有趣。

此外,教师在教授游戏的基本操作后,学生在课下可以很方便地在个人电脑上继续游玩,从而主动探索知识点,深入了解编程语言的应用。

(一)主流的游戏化编程教学平台

游戏化编程教学平台就是设计精良的教学平台。在整个游戏过程中,每个关卡都经过精心设计,从而包含一定的知识点。关卡与关卡之间的联系就是知识点之间的过渡。学生闯过关卡,就意味着掌握了相对应的知识点。

CodeCombat是一个让学生通过玩游戏学习计算机科学的平台。学生可以根据设计的游戏关卡一步步掌握编程知识。目前该平台支持Python,Javascript,Jquery,Bootstrap,HTML5,CSS3。

同时,极客战记的游戏编程课程尤其适用于学校教学的需求,任何一个无编程经验的教师都可轻松授课。

常见的游戏化编程教学平台有CodeCombat,Human Resource Machine,CodinGame,CodeFights,Code Hunt等。

Human Resource Machine游戏中玩家要作为一个公司的小职员,完成上司交给的一些任务,而完成任务的方法就是编写一个足以达到目标的程序,并且按照程序中的条件进行活动。本作所采用的编程方式其实是一种相当古老的方法,只是符合一般的计算机逻辑思维,想要用这款游戏学习专业编程似乎没什么作用,不过没有编程基础的人玩起来应该会感到不解和困惑。

CodinGame是一个游戏平台,每一个练习背后的逻辑都与一个实际的游戏相连,让你能够获得实时视觉反馈,在完成练习之后也能获得实际的奖励。目前该平台支持23种不同的编程语言,其中每一个游戏练习都可以选择自己熟悉的语言。在CodinGame平台,每一个练习都是基于浏览器的,会提供一个网络集成开发环境,不用刷新网页就可以实时编译代码,并实时看到游戏的变化。

CodeFights是一家将练习编程的过程变为游戏过程的初创公司。目前,该公司已经完成240万的种子资金,以发展实时社交游戏——在游戏中,码农既可以选择人机对战模式,也可以选择挑战其他玩家。CodeFights有JavaScript、Java、C++和Python编程挑战游戏,用户需要完成找出Bug的挑战任务,胜利者就可以获得相应的徽章。

Code Hunt是Microsoft旗下新出的一款教育游戏,对大家感兴趣的编码基于浏览器的游戏。它供任何对编程有兴趣的人学习代码。该游戏呈现的方式并不是选择答案的学习题,而是提供了一个可编辑的类似编码界面,并在右边不断跳出程序的运行结果,测试运行结果是否符合要求。

(二)教学思路

目前我校计算机相关专业网页前段编程教学已形成一套较为完善的授课体系。我们在二年级上学期讲授HTML和CSS知识,二年级下学期进行JavaScript教学,在三年级上学期进行项目实训。

三、编程思想入门案例

在具体的教学过程中,笔者以一个教学案例来说明游戏化编程教学是如何融入计算机语言编程教学过程中的。

教学内容为“编程思想入门”。整个教学过程分为3个阶段,分别是引入阶段、新授阶段和实验阶段。课程所使用的游戏化平台是CodeCombat,因为该平台目前已经在网易上线,即全程授课,无需授课教师自行搭建实验平台,可以让教师更投入地设计课程。

在CodeCombat中,教师可以建立自己的授课班级,在授课班级中可以观察到学生的游戏进度,从而对学生进行有效的课堂辅导。

在引入阶段,主要向学生介绍游戏化编程教学的由来,以及CodeCombat的背景和操作,从而使学生能在接下来的新授阶段中更好地使用该平台进行学习。

在新授阶段,先主要介绍所使用到的JavaScript语法,在此处,无需过多地灌输语法知识,只需让学生有感性的认识即可。

在实验阶段,则让学生按照指定关卡进行游戏,教师通过平台的班级模块,观察学生的游戏进度,从而找出学生共性与个性问题进行讲解。通过教师讲解,引导学生掌握编程思想。

(一)CodeCombat平台与游戏化编程教学

使用传统的方式来学习编程,这是一个比较难入门的过程。因为编程的本质是一种构思如何使用电脑来解决问题的思路。因此,学习编程就是要从人的思维模式转变为机器的思维模式。

但现在这种入门难的情况有所好转,因为可以通过一种新的方式学习编程思想,那就是游戏化编程教学。

游戏化编程教学就是将编程知识融入一款游戏平台中,使用关卡将知识进行串联,从而达到寓教于乐的作用。

在CodeCombat中,我们将通过闯过一系列的关卡完成学习目标。在这些关卡中,学生需要思考,然后使用编程语言完成关卡指定的任务。

(二)JavaScript中的对象以及对象的方法

JavaScript是一种面向对象的语言。在JavaScript中,我们把对象所具备的功能称之为对象的方法。如下为对象hero的UML图。

在JavaScript中,通过使用对象来封装数据。封装,即隐藏对象的属性和实现细节,将抽象得到的数据和方法相结合,形成一个有机整体,仅对外公开接口。

在JavaScript中,对象的方法为:对象名.方法()。例如,讓游戏中的英雄向上移动,就可以hero.MoveUp();来下达命令。其中,hero对象就代表了游戏中所选中的英雄。

(三)使用JavaScript通过关卡

在学习了如何使用JavaScript操作对象后,接下来的实验阶段,就该使用该语法进行通关了。在通关的过程中,最重要的是合理安排英雄的路线。然后再使用JavaScript来操作英雄完成关卡任务。

四、结语

在近年的JAVASCRIPT编程教学中,笔者发现学生对传统的先教授语法,再讲授应用场景,最后结合面向对象思想来编程的教学顺序产生了普遍的抵触心理。归其原因主要是因为这样的讲授顺序枯燥,且不贴合学生的生活。于是,我引进了CodeCombat讲授JavaScript编程课程,通过生动的画面、有趣的关卡吸引学生去尝试。让学生在尝试中收获编程的思想。从而解决了编程入门难,学生学起来枯燥的问题。这样,提高了学生的学习兴趣,同时也为后继课程打下良好基础。

参考文献:

[1][美]Nicholas C.Zakas.JavaScript高级程序设计[M].人民邮电出版社,2012.

[2][美]David Flanagan.JavaScript权威指南[M].机械工业出版社,2007.

[3][美]Addy Osmani.JavaScript设计模式[M].人民邮电出版社,2013.

[4]刘广钟,高峻,刘旻,等.报文分析技术在计算机网络教学中的应用[J].计算机教育,2014(1):76-80.

◎编辑 冯永霞

猜你喜欢
教学
“自我诊断表”在高中数学教学中的应用
类比在高中数学教学中的探索
在遗憾的教学中前行
计算教学要做到“五个重视”
教育教学
构饰课教学提要(之二)