游戏化教学设计的应用探究——以“python程序设计”课程为例

  文/中山市建斌职业技术学校范振威

  一、背景

  软件开发课程是中职计算机专业中几乎不可或缺的基础性课程,而在语言的选择上,很多学校都会选择使用面广,且语法相对容易理解的python语言。笔者尝试在本校的计算机应用专业进行python程序设计的教学,但教学情况并不理想。一方面是由于学生的抽象思维能力较弱,难以理解程序的控制逻辑和一些抽象的语法概念,学习起来十分吃力。另一方面,python的开发界面并非所见即所得,其运行结果也不是可视化的,学生在代码编写的过程中缺乏反馈,容易产生倦怠情绪,进而失去学习动力。针对学生的学情和特点,笔者以青少年普遍感兴趣的电子游戏作为教学手段,借鉴参考了其他学科的一些游戏化教学设计方法,研究怎样使用游戏化的教学模式,重构python编程课堂。以此激发学生的潜能,让学生理解编程,学会编程,乐于编程,提高课堂教学的实效。

  二、游戏化教学

  (一)游戏化教学的概念

  游戏化是指将游戏活动中的一些元素,应用到游戏以外的一些场合中,使得某些严肃的、非娱乐性的行为带有“游玩”的性质。游戏化教学则是将这个场合限定到教育领域中,教师将游戏化的元素带进课堂,将学习这一认知活动,转化为带有娱乐性质的游戏行为。

  (二)游戏化教学设计的方法

  游戏化教学设计离不开游戏本身,但是不能简单地将游戏化教学设计理解为在课堂教学中使用了某款游戏。在设计过程中,应当把游戏化作为一个系统,把课堂作为一场游戏去进行设计,将游戏中常见的元素融合到教学设计中去。游戏化元素的使用应该是经过仔细考量的,在设计过程中,应该遵循一些方法与准则。

  首先,游戏化教学设计必须能在课堂中发挥游戏这一形式的优势,不能为了游戏化而游戏,脱离学习的核心目标。不同的媒介有不同的优缺点,游戏亦然,游戏化教学不意味着排挤其他的教学媒介。例如要向学生展示某项资讯,一般通过实物或视频也能很好地展示,而不用安排一次游戏活动。游戏化是为了提高学生的学习效率,改善教学质量,应该把游戏元素用在能发挥其优势的教学环节上,避免游戏化要素的过度堆砌。

  第二,游戏化教学设计要抓住所学课程的核心动作,将游戏过程与认知过程紧密结合,并努力在核心动作上发掘乐趣,以达到吸引学生主动参与的目的。所谓核心动作就是学科本身的底层构建逻辑,如计算机编程这门课程,它的核心动作就是使用编程语句,来控制电脑完成某项预定的任务。如果设计的游戏的玩法与学科的核心动作偏离过大,那么游戏活动就只剩下“玩”,而“学”的部分则被消解。核心动作应该通过游戏化而变得富有乐趣,其沉浸性越强越好,不应是单纯套壳换皮。比如当前一些教育游戏,其内核仍是选择题的形式,只是把题目电子化了,视觉界面上做了一些包装美化。虽然名义上是在做游戏,但学生很快就能看出这种游戏的乏味,这样的游戏化教学效果往往不尽如人意。理想的情况应当是通过游戏元素,在课堂中创造一个让学生沉浸其中的世界,在这个游戏世界里面,学生忘记了自己是在学习专业知识,在游戏过程中自然而然地习得课程要求的专业技能或专业素养。

  第三,游戏化设计要考虑游戏本身的复杂度。游戏化是服务课堂的一种手段,而其使用的主体主要是学生。因此在使用时,不得不考虑学生进行游戏的学习成本。课堂时间是有限的,学生在一定时间内能接受内化的信息量也是有限的,如果游戏机制过于复杂,则可能让学生花费过多时间和精力理解游戏本身,降低了课堂教学的实效。而机制与规则过于简单,则又有可能让游戏失去趣味和挑战性,降低学生参与的动力。因此游戏的复杂度的设定,应该谨慎地权衡。既要考虑学生自身的接受能力,又要根据教学时长和课程周期去进行选择。一般来讲,在保留核心玩法的前提下,游戏的规则应该尽量精简,以降低游戏化设计在课堂推广落地中的成本。

  第四,游戏化设计必须考虑对学生身心的影响。游戏化教学设计虽然从学校课堂出发,但是不能仅仅关注课堂的实施效果,最终还是要以学生为本,思考游戏化对学生的未来发展有何影响。比如有的游戏活动设计,采取了抽奖、开箱等基于运气和概率的游戏形式,虽然在课堂中能够短期地刺激学生,活跃课堂氛围,在学习中过多地掺入这些随机甚至带有赌博性质的游戏要素,并不利于学生的个人成长。

  三、python程序设计课程的游戏化教学设计方案

  (一)python程序设计游戏化教学的设计思路

  1.以电子游戏作为突破重难点的手段

  针对编程学习过程中普遍存在的反馈弱、直观性差的痛点,使用电子游戏作为突破重难点的手段。电子游戏普遍有良好的交互性,能对玩家操作作出及时的反馈。市面上现有的编程游戏较多,经过比较后,笔者选择了CodeCombat这款游戏。这是一款学习python编程的角色扮演游戏。学生在游戏中扮演一位战士,在游戏世界中进行冒险,使用python语言操纵角色的行动,完成每一关的任务。CodeCombat本身的关卡有明确的难度梯度和知识点划分,能够有针对性地应用于课堂教学。而且CodeCombat是一款网页游戏,不用安装,对电脑硬件配置基本没有要求,适合在学校电脑室中使用。另外,CodeCombat支持中文语言界面,对于英语基础薄弱的中职学生而言,十分友好。

  2.引入游戏中的三大奖励机制,激励学生学习

  将游戏中常见的三种奖励机制引入课堂,以强化学生的学习动机。这三种奖励机制分别是:进度条、点数和勋章。进度条是指玩家完成进度的直观指示,通过进度条,学生在编程过程中能够直观感受到自己的进步,看到自己与目标间的距离,进而建立起对编码过程的掌控感。点数是指玩家通过游戏所积累的分数或资源,它是游戏结果最直接的体现。勋章是指游戏中对玩家游戏经验的一种证明和肯定,它能满足玩家的荣誉感,能够吸引玩家持久地进行游戏。CodeCombat游戏平台在程序运行的过程中,会显示动态的进度条,学生在编程调试过程中,可以得知自己在这个关卡的完成进度。在成功通关后,学生能够得到经验值和宝石两种点数的奖励。CodeCombat中还有成就系统,达成某些条件,可以获得相当于勋章的成就奖杯。

  3.利用游戏中的社交属性,建立合作互助机制

  游戏之所以能吸引人,不仅仅在于游戏内容本身,还在于游戏所带有的社交属性,游戏过程能让人们产生共同的体验,进而在游戏以外建立起社群,起到情感上的联结和支撑作用。在使用CodeCombat进行游戏化教学时,使用平台上的“部落”功能,可以将学生分成几个团体,同一“部落”的学生能够共同游戏,一同闯关。通过这种机制,能让学生在游戏化的过程中不至于孤立无助。团体内部能够互相学习,共同进退。利用这种组团机制,还能培养学生的集体荣誉感和团体竞争意识。

  (二)游戏化教学设计实例“条件判断控制语句”

  下面以python中的“条件判断控制语句”一课为例,简述运用上述思路进行游戏化教学的基本流程。

  环节一:课前游戏准备

  学生登录CodeCombat游戏平台,加入教师在上课前建立好的部落。教师发放条件判断语句的微课和游戏指南,并提前解锁本课要使用的关卡和地图,锁定与本课无关的关卡。

  环节二:游戏闯关自学

  学生先自行在电脑上观看微课,查阅游戏指南,大致了解条件判断语句在python编程中的作用和基本语法结构,然后学生自己运用刚刚接触的if-else语句,尝试通关“关卡13—if的盛宴”,“关卡19—背靠背”和“关卡41—发狂的矮人”。教师在游戏后台观察学生的通关情况,了解学生对本课核心知识点的掌握程度。

  环节三:游戏复盘分析

  条件判断语句的难点在于多重判断条件的嵌套,为了让学生能够进一步理清其中的逻辑关系,在游戏结束后,教师要求学生回忆“关卡41—发狂的矮人”的通关方法,将程序代码的运行顺序,使用流程图的形式画出来,并让其中一个“部落”的成员上台展示程序的执行流程。通过对游戏的复盘分析,学生将本课难点,由具象的游戏过程总结为抽象的编程原理,完成了从解决具体问题到掌握解决思路的升华。

  环节四:从游戏到现实

  在借助游戏解决了本课的重难点后,要从虚拟的游戏平台向现实中的开发工作迁移,以巩固所学知识。本课选用“用户登录验证”这一编程中常见的业务功能作为实例。教师先搭建好程序的基本框架,核心功能的代码部分留空,以注释的形式明确业务需求。学生在这一环节,综合使用python中的条件判断语句,实现判断用户的用户名和密码是否正确,判断能否成功登录。通过这一环节,学生能够获得编程的实战经验,教师可以在这个环节中,检验学生的知识内化程度和知识迁移能力。

  环节五:课堂评价奖励

  学生在超星学习平台上上传实战案例的程序代码。教师先抽取一位学生进行定向性的评价,为其他学生建立起评价的尺度和参照。然后是学生之间的互评。从功能实现,代码简洁性,代码可读性等方面进行多维度评价。教师根据学生的打分情况,并综合游戏环节中的得分,评选出“最强部落”“编程高手”“代码诗人”等荣誉称号,并进行简单的“授勋”,提高学生的课堂获得感。

  四、结束语

  以游戏化设计python程序设计课堂,用有趣的电子游戏为编程包上一层“糖衣”,充分调动学生的学习兴趣和积极性。游戏化设计中多样的奖励机制和实时的强反馈,使学生从被动学习到主动参与游戏,积极探索和思考过关方法,在游戏过程中不知不觉地掌握了python语言的核心语法。同时,通过对游戏过程的复盘与评价,让学生逐步培养起编程思维,学会像程序员一样看待问题,为学生今后更深入地学习计算机软件开发打下良好的基础。

  责任编辑何丽华

……
关注读览天下微信, 100万篇深度好文, 等你来看……
阅读完整内容请先登录:
帐户:
密码: