当前位置:首页>>校园动态>>精华分享>>文章正文
在游戏开发环境中培养学生问题解决能力
发布时间:2019-09-16   点击:   来源:中国信息技术教育 2019年11期   录入者:任健

● 教学内容分析 
  计算思维是指个体运用计算机科学领域的思想方法,在形成问题解决方案的过程中产生的一系列思维活动。要培养学生的计算思维,设计真实的问题情境是必不可少的,而游戏开发就是一个非常好的载体,它符合问题解决的一般流程,而且游戏本身是学生比较感兴趣的项目,具有较强的实践体验。本课以App Inventor(以下简称AI)可视化编程软件制作打地鼠游戏为例,介绍如何使用程序语言解决游戏开发中面临的各类问题,体验用程序解决问题的过程,在实践中培养学生问题解决的意识与技能,提升学生的计算思维。 
  ● 学情分析 
  本课是手机编程选修课中的一节内容,学生是来自高一各班对程序设计感兴趣的学生,有部分学生已经学习过C++、Pascal等程序语言。现代高中生是被称为“数字土著”的零零后,信息技术对他们的认知、态度及行为习惯的塑造是空前的,他们习惯在互联网上与同学、朋友交流分享信息,喜欢携带自己的移动设备进行学习和游戏。学生学习本课,无需动员便有很大的学习兴趣,有的学生还为游戏设计了一些新点子,如增加难度、增加互动等,教学中可以预留问题空间,留些时间让学生去发挥,有时会有出乎意料的效果。 
  ● 教学策略 
  本课需要两节课的时间完成。在此之前,学生已经熟悉了AI的基本操作,学习了画布组件的相关操作,通过手指拖动在画布上画线,调整线条颜色和粗细等。在本课的教学设计中,按照软件开发的一般过程,通过问题需求分析、问题梳理、编程解决问题、分享展示等步骤展开教学。大部分学生玩过类似的游戏,他们很容易想到需要解决的一些问题,如如何随机产生“地鼠”等,接着师生一起用AI程序块去解决这些问题,通过运行、调试、运行不断改进程序,如果冒出新想法则启发他们进一步深入下去,对程序进行补充、修改,最后进行展示分享。在調试环节,为每位学生配备了一台安卓智能手机作为模拟器,程序可以在手机上立刻呈现效果。如果没有手机,电脑上也可以通过安装“AI伴侣”程序进行测试。 
  ● 学科核心素养 
  ①能够根据问题的需要,主动、合理地寻求恰当的方式获取与处理信息。(信息意识)②能够采用计算机科学领域的思想方法界定问题,抽象问题特征,建立结构模型,合理组织数据。(计算思维)③对信息技术创新所产生的新观念和新事物,具有积极学习的态度。(信息社会责任) 
  ● 课程标准要求 
  ①了解常用移动终端的类型和功能,描述移动终端的特征与组成。②在具体的移动应用设计实践中,了解移动应用的基本架构,理解基于图形化开发工具进行移动应用设计与开发的基本方法,能利用模拟器测试移动应用程序(APP)。③掌握移动应用设计与开发的思想方法,根据需要设计恰当的移动应用,创造性地解决日常学习和生活中的实际问题。 
  ● 学业要求 
  ①知道移动应用的特点,认识到信息社会中移动应用的价值。②能够基于移动终端的特点,利用图形化的设计开发工具,设计开发基于单台设备的移动应用。③开发基于真实任务的简单移动应用,设计基于移动应用的问题解决方案。 
  ● 教学目标 
  ①了解画布、精灵组件的特点和基本使用方法。②在实际运用中了解随机数的特点,并体会随机数在游戏中的作用。③根据游戏设计中的问题,抽象问题特征,合理设计程序结构,掌握AI编程技巧。④继续理解面向对象、事件驱动的编程原则,体会AI编程的一般流程。 
  ● 教学重难点 
  教学重点:了解画布、精灵组件的特点和基本使用方法;根据游戏设计中的问题,抽象问题特征,合理设计程序结构,掌握AI编程的技巧。 
  教学难点:继续理解面向对象、事件驱动的编程原则,体会AI编程的一般流程。 
  ● 教学过程设计 
  1.情境引课 
  师:前面学习了在画布组件上通过手指绘制线条,与图片组件只能用来显示不同,它还可以接受输入,允许手指、鼠标触摸、拖动等外部输入动作,是一种交互性很强的组件。今天,我们要利用这个组件制作一个“打地鼠”的游戏程序,同时还会用到一个新的交互式组件——精灵组件。 
  2.“打地鼠”游戏的制作 
  环节一:问题的提出(5分钟) 
  师:“打地鼠”游戏想必同学们看到过,玩过,有的同学可能还玩过实物游戏机,需要拿着小榔头敲击不断冒出来的“地鼠”。 
  学生们纷纷点头表示玩过。有的学生说敲到“地鼠”的时候,游戏机还会发出声音呢。有的学生说地鼠出来的位置都是固定的,不过从哪个洞里出来是随机不确定的。有的学生还说,获胜的关键要靠敏捷的反应力,“地鼠”出来又下去的速度很快啊…… 
  设计意图:引入学习课题,调动学习兴趣,启发学生思考“打地鼠”游戏该如何设计。
  环节二:问题的梳理(5分钟) 
  师:刚才同学们回答得很好,看来大家都是游戏玩家啊!今天,我们就要来设计一款手机上运行的“打地鼠”游戏。你们提到的几个问题,老师来梳理一下:①“地鼠”是怎么随机出现的?②用什么可以调节“地鼠”出现的速度?③打“地鼠”的动作怎么模拟?④次数要不要统计?怎么统计? 
  根据学生的知识储备,有的问题还不知道如何解决,但会有一些生活中的感性认识。第一问,有的学生知道要用随机函数;第二问,有学生反应出来可以用一个计时器组件;第三问中由于没有学过精灵组件,暂时答不上来;而第四问,学生知道计分一般用标签组件就可以了。 
  设计意图:根据游戏创设问题情境,通过梳理问题,建立与程序间的联系,帮助学生从具体问题转换到抽象程序。 
  环节三:编写程序解决问题(30分钟) 
  师:下面我们一起来使用AI软件开发这个游戏程序。大家在制作过程中如果有好点子、新想法可以提出来哦!AI程序开发主要分为界面设计和程序编写两大部分。在界面的设计中,刚才提到的画布、计时器、标签等组件都是需要用到的,同时还需要增加一个精灵组件,它代表了“地鼠”,我们只要用一张地鼠的图片作为它的显示图片就可以了。有学生提到,打到“地鼠”的时候最好有声音或者让手机振动一下,那就可以增加一个音效播放器组件。

学生在教师的带领下,一起制作游戏界面,添加各种组件,摆布合适的位置并修改其属性。 
  师:在完成界面设计的基础上,接下来开始进入程序编写阶段。AI的程序遵守面向对象、事件驱动的编程原则,根据问题的描述,思考需要面向哪个组件、选择什么事件进行编程。 
  教师提问①:如何让“地鼠”随机出现? 
  可以通过“计时器”对象的“到达计时点时”的事件,让“地鼠”移动到一个随机的位置,具体代码块如上页图1所示。 
  学生通过鼠标拖动操作编写程序,首先选择“计时器”对象,在其中找到“到达计时点时”事件,再到“地鼠”精灵对象中找到“移动到指定位置”的程序块,完成搭建。其中在随机数的使用中,“地鼠”的X、Y坐标的最大值是画布的宽度、高度减去精灵的宽度、高度。 
  教师提问②:用什么可以调节“地鼠”出现的速度? 
  学生研究摸索得出:只要修改计时器的“计时间隔”属性就可以了。 
  教师提问③:“打地鼠”的动作是怎么模拟出来的? 
  在第一问的基础上,学生想到了可以从“地鼠”对象中找程序,并设置音效播放器振动的效果,如图2所示。 
  教师提问④:次数怎么统计? 
  教师启发学生找一找标签对象里的程序块。学生思考如何统计次数,用什么组件实现。在用到需要计算的时候,想到了“数学”内置块中的求和运算,经过多次尝试,最终得到如图3所示的程序块。 
  设计意图:让学生继续熟悉面向对象、事件驱动的编程原则,感受AI编程的一般流程。
  环节四:自由创作阶段(30分钟) 
  教师为学生提供一些建议,学生有好的想法可以一起讨论。 
  ①打到“地鼠”,次数加1次,如果没有打到,怎么实现失败次數加1次呢?②除了提高出现的速度以外,能否再增加些难度? 
  学生开始自主制作完善自己的程序。 
  在学生自由创作阶段,学生在已有程序的基础上,通过手机测试已经可以实现一些有趣的功能了,如手指触摸、手机振动、次数计分等,学习兴趣被调动起来了。有的学生根据“切水果”游戏中的“炸弹”想到能不能在程序中引入“炸弹”精灵,如果碰到“炸弹”,让命中次数清零。有的学生想到,除了让“地鼠”快速出现,能不能让它向不同方向出现呢?另外,要统计失败次数,需要引入条件语句的程序块才行,但学生不知道放在哪里。 
  学生的想象力丰富,有的问题教师是没有预设到的,如“炸弹”的使用、“地鼠”向其他方向运动等,经过与学生一番讨论与尝试,这些想法是可以实现的。“炸弹”可以增加一个精灵组件,而它随机出现的动作可以再增加一个计时器组件,方法类似“地鼠”。同时,可以调整一下这个计时器的计时间隔,让它们在不同时间出现。而精灵组件的程序块中提供了“方向”代码,结合随机函数的使用可以进一步增加难度,如上页图4所示。 
  对于“失败次数”的统计,学生都知道用“如果—则—否则”程序实现,但放在“地鼠”对象中,怎么也做不出来,因为它已经有“被触摸时”的事件了。通过分析,除了精灵对象以外,画布对象也是可以的,因为触摸精灵的同时也是在触摸画布。经过师生的共同努力,在画布对象中找到一个“被触摸时”的事件,如上页图5所示。 
  学生制作了自己的游戏程序,后来有的学生还增加了“重新开始”的按钮,有的学生使用了前面学习的“过程”语句块,简化了程序,有的学生还增加了“对话框”组件,告知已经过关,或者继续努力等。 
  设计意图:通过留一定的时间和空间,激发了学生自主学习的兴趣,通过测试—修改—测试的流程不断完善,让学生体验软件开发的全过程,在游戏开发环境中培养了学生问题解决的意识和技能。 
  环节五:分享展示环节(10分钟) 
  由于使用手机进行测试,对于作品的分享展示,教师提供FTP文件夹共享,首先让学生导出项目文件并上传到FTP,然后让学生在教师机上导入项目,利用手机投屏的方式在投影上展示。 
  学生演示自己游戏的功能,讲解其中的制作亮点。 
  设计意图:集思广益,互相启发,总结利用计算机解决问题的过程和方法,并迁移到与之相关的其他问题解决中,通过展示,激发学习的兴趣和自信心。 
  3.课堂小结 
  师:通过这次课的学习,我们掌握了画布、精灵等交互式组件的使用方法,体会到了计时器和随机函数在游戏开发中的重要作用。面对游戏开发中出现的问题,我们通过图形化的编程手段完成了这些问题的解决,希望同学们善于总结,举一反三,将这些编程方法运用到其他实例的开发中去。 
  ● 教学反思 
  游戏开发是一种学生喜欢的学习活动,通过App Inventor积木式的编程软件降低了学习难度,让学生可以直面问题,经历问题解决的全过程,培养了问题解决的意识与技能。在教学过程中,教师应该帮助学生进行归纳总结,帮助他们抽象特征,建立结构模型。教师要注意合理引导,让学生的兴趣点始终保持在问题解决的主线上,这样有助于学生更好地理解计算机解决问题的一般过程,提高知识与技能的迁移能力,真正达到培养学生计算思维的目的。 
  点  评 
  任老师的案例体现了基于设计的项目学习过程,他以设计开发“打地鼠”游戏为问题情境,引导学生展开项目学习,体验用计算机进行问题解决的完整过程,提高了学生的计算思维能力。第一,项目问题的选择能够激发学生兴趣,引导学生把视角从“玩游戏”转换到“设计游戏”,提出了具有一定挑战性的学习任务,也给完成项目的学生带来了成就感。第二,可视化编程软件的应用,有助于降低游戏开发难度,学生只需掌握各种组件的不同特点和功能,就能通过对实际问题进行抽象、分解、组合等操作,灵活运用组件和程序模块实现游戏功能,真正锻炼了学生的计算思维能力。第三,由于项目具有一定的开放性,在自由创作阶段,涌现了很多游戏新思路,学生的创意得到了教师的肯定和指导,设计出了具有一定创造性的游戏程序,这也是本案例的精华所在。 
  (点评人:江苏省无锡市第一中学信息技术教研组长 夏燕萍)

附件
    关闭窗口
    打印文档