《趣味程序设计之“接纸团”小游戏》教学设计

2015-09-10 07:22闫妮钟柏昌
中国信息技术教育 2015年24期
关键词:控件分支本课

闫妮 钟柏昌

“分支结构”作为程序设计中解决实际问题的一种方法,是“VB程序设计”教学中的重点和难点之一,让学生理解何时用和如何用是教学的关键。大多数教材通过类似“猜数”的程序进行教学,但由于与学生的生活联系不是很紧密,很难引起学生的兴趣。因此,本课以设计一个“接纸团”的小游戏作为课程内容的载体,以设计游戏来激发学生的学习兴趣。

教材与学生情况分析

本课是河北省中小学信息技术电子教材VB程序设计分册中第四单元中的内容,课时为两课时,软件版本为VB6.0。在本课之前,教材已涉及程序设计的基本概念、VB的基本操作以及顺序结构中用到的简单控件、常量、变量、表达式和函数等知识,为本课的教学奠定了基础。本课将学习利用分支结构控制程序的流程,学生通过学习能够处理多分支问题并作出正确判断,并能用流程图表示程序的执行过程。

本课的教学对象是初二年级学生。通过前面的学习,学生已经掌握了VB程序设计的概念和一般过程,能够完成对象的属性设置和事件添加,并能够运用表达式和函数来解决问题。另外,前几节课的活动以学生学习和生活中的常用软件为原型进行程序设计,激发了学生开发复杂软件的兴趣,所以学生迫切希望找到解决问题的方法。

教学目标

知识与技能目标:理解并掌握Timer控件和Timer事件的用法;掌握Rnd函数的用法;能够合理运用关系表达式和逻辑表达式;能够用IF语句来处理多分支问题并作出正确判断;能够使用流程图表示程序的执行过程;能够处理嵌套的分支结构。

过程与方法目标:通过开发“接纸团”小游戏,掌握程序设计的一般过程;能够测试和调试程序;通过不断探究解决问题,能够自主完成一些任务。

情感态度与价值观目标:在游戏的不断完善中体验迭代的思想;在实现程序功能中体会用户体验的重要性和程序设计的意义。

游戏设计与实现

1.游戏功能设计

基于以上分析,本节课将要求学生完成一个“接纸团”游戏的设计任务,实现键盘控制、计时和物体随机运动等基本功能,具体方案如上页表所示。本游戏的开发分两个版本,完成前面四个功能为“接纸团V1.0”版本,实现全部七个功能为“接纸团V2.0”版本。

2.游戏界面设计

本课需要用到的控件有Image、PictureBox、Label、Timer。Image控件用来创建ImgLaji对象和ImgTong对象,分别显示纸团和垃圾桶;PictureBox控件用来创建一个供ImgLaji对象和ImgTong对象活动的区域,相当于一个容器;Label控件用来创建Label1对象和Label2对象,前者用来说明后者的功能,后者用来显示得分;Timer控件用来创建一个计时器对象,用来统计游戏时间和模拟ImgLaji对象自动往复的匀速下落。下图是本课案例的界面,学生可以以此为参照展开设计,使程序界面更美观。

3.程序编写

实现“接纸团V1.0”的功能需要用到Timer事件、IF单分支和双分支语句及条件表达式,具体代码省略。

教学实践

本次教学为两节连堂课,笔者设计的教学流程为:创设情境,分析需求→针对需求,设计界面→任务驱动,层层递进→拓展提升,归纳总结。

1.创设情境,分析需求

教师以游戏的设计作为活动和内容的载体,贴近学生的学习和生活经验,从而激发学生的兴趣和热情。因此,本环节教师首先让学生回忆玩过的游戏并思考其功能,引导学生展开讨论,找出与本课主题相关的游戏功能并总结。在此基础上,教师再让学生思考如何设计一个“接纸团”的游戏。学生积极讨论,提出应对策略。教师积极反馈学生的回答,并通过引导使其在脑海里建立一个解决的蓝图,接着运行“接纸团”游戏案例,引导学生用自己的语言描述游戏的功能,从而为学生的蓝图插上翅膀。

2.针对需求,设计界面

本环节包括分析阶段和搭建阶段。

在分析阶段,教师首先引导学生思考教材中的“对象事件分析表”如何实现程序的每个功能,接着让学生检查表中是否实现了程序的全部功能,如果不能,说明理由并进行完善。在分析过程中,让学生体会如何把自然语言转化为编程语言,实现需求分析中的功能。

在搭建阶段,则由学生根据已有知识,参照上页表格中要求的控件,完成界面的设计。在此过程中,学生会遇到新的知识,如Timer控件。对此,学生以小组形式讨论并总结控件的添加方法。教师对学生的回答给予积极反馈,并纠正和补充说明。

3.任务驱动,层层递进

这一环节,根据游戏的功能划分为四个阶段。

①利用ImgLaji对象实现匀速下落一次。

首先,让学生利用已有知识实现ImgLaji对象的下移运动,并分析此效果存在的不足,从而引出Timer控件和Timer事件。然后,教师系统地介绍Timer控件的重要属性和Timer事件的执行原理,并引导学生分析Timer控件的Enable属性与其他控件的Enable属性的不同。学生在对以上知识有了一定的认识后,利用Timer事件实现ImgLaji对象匀速下落并运行程序。此时会出现ImgLaji对象在下移时超出Picture1范围的新问题,以致看不到第二次下移运动。

教师引导学生分析新问题,得出“ImgLaji对象在下移过程中如果没有超出范围则继续移动,否则停止移动”的解决办法。此时,给学生介绍选择结构和单分支IF语句,并利用流程图描述程序执行过程。接着,教师引导学生学习条件表达式,并比较其与数学表达式的异同,编写单分支结构代码实现判断ImgLaji对象超出范围停止的功能。

②利用ImgLaji对象从窗体顶部随机位置往复匀速落下。

运行上述程序,教师通过设置疑问引出双分支结构,实现了ImgLaji对象超出范围后回到界面顶部。经过修改后,学生还会发现一个新的问题,即ImgLaji对象每次都从相同的位置下移,既没有实现需求中随机的效果,也不具备挑战性。因此,教师引导学生自学Rnd函数的用法,并思考哪个属性决定ImgLaji对象的随机下移。教师通过提问,发现学生能够想到改变ImgLaji对象的Left属性实现随机效果,但就随机值的获取还存在问题。此时,教师进一步引导学生思考Picture1对象和ImgLaji对象的关系,从而得出只要使ImgLaji对象的Left属性值在Picture1的Width属性值范围内即可。接着,让学生探索解决此问题的表达式,并采用最有效的方法编写代码。

③利用键盘按键控制ImgTong对象移动。

游戏必须要有交互功能,根据本游戏的实际,需要采用键盘交互。首先,让学生自学KeyDown事件的功能和使用方法。教师接着提出问题:如何用该事件实现键盘控制?学生在分析后回答:实现键盘控制需要进行多次判断,所以需要多个分支。教师肯定和表扬学生的回答,再讲解多分支IF语句的格式和程序执行过程的流程图。当学生理解后,由学生自行选择按键,画出流程图并编写代码。接着,学生运行程序并分析效果,提出改进意见。有的学生说可以通过数值改变ImgTong对象移动的幅度,以便更快地接住纸团;有的学生说ImgTong对象会移动到Picture1之外;还有的学生说需要修改ImgLaji对象的最低位置,使其能随着ImgTong对象的移动而变化。教师肯定学生的回答,并提出修改意见,学生尝试完成任务。

④实现计时和计分功能。

经过上述修改后,游戏的基本功能已经实现,但还不能计分和计时。教师引导学生分析并总结:当ImgLaji对象在下落过程中即将超过ImgTong对象时,ImgLaji对象落在ImgTong对象上,则加分,否则不加分,随后让ImgTong对象回到顶部随机位置。教师让学生把该执行过程补充到流程图中,再让学生分析流程图中各分支的特点,并引导学生说出Else分支中包含的两个分支,随后向学生讲解嵌套IF语句的格式和执行过程。为了方便学生理解嵌套结构的触发条件,教师运行上述程序并移动ImgTong对象,让学生观察发现ImgLaji对象落在ImgTong对象上的位置条件,并利用嵌套结构实现计分功能。最后,教师引导学生利用变量来控制时间,并提示学生此处与纸团控制方法的不同之处在于这里是变量,而后者是常量,从而引导学生编写程序时注意更改变量的值。

4.拓展提升,归纳总结

学生完成以上全部任务后,调试并运行程序。学生可能还会出现如下问题:一是ImgLaji对象在下落过程中有时会不断闪烁;二是多次运行程序会发现ImgLaji对象在限定时间内每次的运动轨迹都相同;三是界面没有显示倒计时用来提醒用户;四是游戏没有设置重玩功能以及闯关功能;等等。对于问题一,教师可让学生改用PictureBox控件,并介绍Image控件和PictureBox控件的区别。对于问题二,教师可以在讲解Randomize语句的用法及其与Rnd函数的关系之后,再由学生自己解决。问题三和问题四属于新的功能,教师可以引导学生分析算法并由小组协作完成。最后,教师再引导学生回忆整个程序的实现过程并总结每个知识点和其使用情境。

教学反思

本课以分支结构为线索展开教学,主要是让学生掌握分支结构的使用方法,使其能够处理多分支问题,并能用流程图表示程序的执行过程。从掌握情况来看,几乎所有学生都掌握了IF单分支、双分支及多分支IF语句,部分学生掌握了IF语句的嵌套,而且还能灵活运用。例如,针对ImgTong对象可能会移动到Picture1外的情况,学生们想到了利用控制ImgLaji对象的方法解决,即嵌套结构。

从教学角度看,需求分析阶段的“对象事件分析表”相当于一个学习支架,帮助学生梳理任务元素和解决过程,很好地锻炼了学生的逻辑分析能力和编程思想。在界面设计阶段,学生可以根据自己的想法设计界面,自由发挥。在算法分析和代码编写阶段,整个教学过程是以问题为导向,使教学始终围绕任务进行,学生通过问题的解决可以明确知识的应用情境,并能灵活运用学到的知识。最后的调试和拓展环节,学生在解决程序问题以及实现新功能的同时,知识迁移运用能力和独立解决问题的能力得到了提升。

当然,本堂课的教学中还存在一些不足,如不能及时掌握学生的知识接受情况;由于时间的限制,学生想到的一些功能无法实现等。

猜你喜欢
控件分支本课
使用“填表单”微信小程序 统计信息很方便
基于.net的用户定义验证控件的应用分析
Let’s play football.(部级优课)
人教版八年级物理下册《液体的压强》教学设计
从“听唱读写”四个方面对学生进行节奏训练
基于git工具的多分支并行开发上线流程
用“分散数论”对“哥德巴赫猜想”的初等证明
含有二阶幂零鞍点的双同宿环附近的极限环分支
硕果累累
利用VF6.0的Timer控件实现动画效果