毛澄洁+项杰庭
● 游戏教学与App Inventor课程设计
1.游戏与游戏教学
游戏既是一种古老而基础的学习形式,也是学生们喜闻乐见的学习和娱乐的手段。游戏教学具有游戏的特征,但又不完全等同于泛在的游戏。游戏教学具有特定的教学目标,泛在的游戏没有教学目标。
游戏教学应用于课程与教学之中具有多种途径,如可以将游戏运用于课堂的导入环节,达到设疑、激趣和定向的效果,还可以让学生设计与制作自己的游戏,达到掌握相关技能与知识的作用。将游戏元素设计到App Inventor课程中来,通过游戏教学的途径来学习与应用App Inventor编程工具,能够激发学生的学习热情,有效实现课程目标。
App Inventor中一些组件的功能能够很好地用于游戏开发与制作。作为课程的起始部分,可以以制作游戏的方式进行,因此开发出“游戏制作专题”课程单元,然后由浅入深地开发后续课程。
2.“Drawing and Animation”组件简介
(1)Canvas(画布)组件。
画布是一个具有触控感应的二维平板,在它上面可以绘画,可以移动精灵。它是一个容器控件,绘画和动画动作只有在该容器中才能实现。
它采用经典的屏幕坐标,画布上的任何一点都可以用一对数值(X,Y)来定位,其中X是距画布左边距离,Y是距画布上端的距离,且都是正值。
通过宽度(Width)和高度属性(Heigh)可以设置画布的大小,还支持背景颜色(BackgroundColor)、背景图片(BackgroundImage)的改变,设置画笔颜色(PaintColor)和宽度(LineWidth),以及画布是否可见(Visible)等属性。
画布支持的事件有拖拽事件(Dragged)、快划动事件(Flung)、触碰按下事件(TouchDown)、触碰抬起事件(TouchUp)、触碰事件(Touched)。这些事件是动画和游戏制作的基础。
(2)Ball(小球)组件。
一个圆形的精灵,可以被放置在画布中,它会对触碰事件、拖拽事件产生反应,会与其他精灵作用,发生碰撞事件,以及碰到边缘事件。会根据设置的属性值呈现不同的大小、颜色,按一定的方向和速度产生移动。
例如,要让小球在0.5秒内移动4个像素位置,就需要设定Speed属性值为4,Interval属性值为500,Heading(方向)属性值为90,Enabled(可用)属性值为True。
小球的外观只能通过它的PaintColor属性值和Radius属性值来改变,小球的位置通过它的X属性值和Y属性值来改变。
还可以具有CollidedWith
(component other)、EdgeReached
(number edge)、NoLongerColliding
With(component other)3个碰撞事件,而这也正是制作动画和游戏的出发点。
(3)ImageSprite(图像精灵)组件。
图像精灵是一种可在画布中自由移动的图像,并可与球体(Ball)、其他图像精灵和画布边缘产生碰撞事件,因此常用于游戏开发。
除可以通过Picture属性设置其他图像外,其他的属性、事件与方法都与Ball控件一样。
3.碰撞检测
碰撞检测是在精灵运动过程中,检测到精灵自身边缘与其他精灵或画布边缘接触的技术。游戏中的物体发生移动后才有必要进行碰撞检测。如何实现碰撞检测?首先确定检测对象,检测是否碰撞,处理碰撞——效果、声音、反应等。
4.游戏制作中的实例简介
按照兴趣原则、以计算思维为核心的编程能力培养原则和任务驱动原则设计了“游戏制作专题”,包括3个由浅入深、逐步递进的游戏制作。它们分别是弹球游戏、乒乓球、打地鼠游戏初级版和打地鼠游戏升级版,这几个都是经典的、现实中常玩的游戏。
(1)弹球游戏。
功能:手指划动球体,球体调用该事件中的速度和方向参数,开始运动。当球体碰到面布边缘时,会根据碰撞方向反弹并发出响声。
难度等级:★
兴趣等级:★★★★
知识内容:画布、小球组件的功能、属性、事件与方法,声音组件。
拓展建议:①根据速度改变小球颜色;②当碰撞到画布边缘时减速;③在画布设置其他障碍物,作为小球的射击目标;④多个小球进行碰撞。
(2)乒乓球游戏。
功能:单击开始按钮,乒乓球从屏幕上部(20,20)以随机速度(8~15)、方向(0~360)开始运动,乒乓球碰撞到画布的上、左、右时,反弹,不加分;碰到拍子反弹,计1分;碰到下边缘,扣1分,播放结束声音。单击重置按钮时,计分清零,小球和单击开始按钮时一样。
拍子控制:用手指拖拽来进行控制、使用方向传感器的roll参数变化来控制拍子的左右移动。
难度等级:★★
兴趣等级:★★★★
知识内容:画布、小球、拍子(图像精灵)组件、方向传感器、碰撞事件、碰到边缘事件、拖拽事件、屏幕坐标、随机整数等。
(3)打地鼠游戏(初级版)(1只地鼠随机出现)。
功能:地鼠在屏幕上随机出现,每秒钟移动一次位置;玩家触摸到地鼠时,振屏,得分加1;玩家触摸到屏幕时,失分加1;单击Reset按钮时,得分与失分清零,重新开始。
难度等级:★★
兴趣等级:★★★★
知识内容:过程的定义与应用、随机函数、条件判断。
(4)打地鼠游戏(高级版)(1只地鼠随机出现在洞里)。endprint
功能:画布上有9个洞,洞有固定位置,地鼠随机出现在洞里。玩家触摸到地鼠时,振屏,得分加1;玩家触摸到屏幕时,失分加1;单击Reset按钮时,得分与失分清零,重新开始。
难度等级:★★★★
兴趣等级:★★★★
知识内容:列表、For Each item in list循环、任意组件及属性值的引用、Z层坐标与多个精灵的遮挡关系。
● 一个游戏制作的教学设计范例摘选——弹球游戏
1.资源准备
(1)搭建好的离线开发环境及离线环境启动说明.doc。
(2)BallBounce.pdf(弹球游戏的参考文档)。
2.教学过程设计
(1)导入。
引导学生回忆小时候玩的弹玻璃球游戏,让学生说一说它的玩法。教师提出问题,“如果是用App Inventor来制作一个弹球的游戏,你会怎样定义它的功能?还需要学习什么知识?”
(2)小组讨论弹球游戏的功能与所需要的新知识。
(3)交流共享,形成一致意见。先做一个最简单的弹球游戏,即手指划动小球时,小球可按手指划动的方向和快慢移动,碰到边缘时会反弹回来。
需要的知识:如何能够让小球动起来?碰到边缘时如何判断?如何反弹?
(4)新知识学习。
Canvas画布组件:容器控件,是绘画、动画与游戏的制作场地。
Ball小球组件:可以按照设置的速度和时间间隔,在屏幕上自主运动。
应用小球的快速划动事件,获得的速度和方向作为小球运动的速度与方向。代码如上页图1。
在该事件中,edge是一个该事件自定义的局部变量(如图2),取值时应注意坐标、方位。反弹方法如图3所示。
碰撞检测:碰到边缘,调用反弹方法。
(5)根据定义功能,自主开发程序。
(6)模拟测试,交流共享并思考改进方法。
(7)教师小结所学知识点并点评学生作品。
(8)撰写自己想增加的功能和界面美化,进行二次开发。
● 游戏专题教学效果
经过3周的教学实践,我们发现学生对能够利用App Inventor制作手机游戏的课题内容非常感兴趣,用学生的话来说就是“当你玩自己做的游戏时,心情无比舒畅,感觉之前一切付出有了回报”。另外,从学生在课堂上的表现也可以看出来,没有一个学生去做别的事,都在非常认真地完成每一个游戏制作的任务,很多东西还有自己的改进想法。
其次,学生对知识的理解非常深刻,在每课的心得文本中学生写到:“学会用列表实现命令的循环,用接触到地鼠和画布时分别加减得分实现对地鼠和洞的区分;学会设置Z坐标,使地鼠不被洞遮住。增加了显示难度等级的设定,增加了游戏的公平性和可玩性”、“通过完善打地鼠游戏,增加了难度设置,修改了自己程序里的BUG,充分地感受到思想是进步的源泉”、“学会了自定义过程,不用再一遍遍地复制,简化了许多步骤。也学会了用touchsprite捕捉图像、调整timer的频数、随机定义地鼠的位置。通过改变timerInterval来改变地鼠移动的速度,增加了软件的可玩性和娱乐性”、“学会了运用edge属性判断球的碰撞落点,从而进行计分的操作,还学会了两个物体碰撞的判断”。
另外,通过每课文本奇思妙想部分的撰写,我们发现学生的编程思维得到了很好的锻炼和提高。学生说到:“这个乒乓球游戏可以扩展为打砖块、打水果、打兔子之类的游戏。可以添加在Ball碰撞图像精灵后图像精灵图片出现变化的功能。在制作一个游戏的过程中可先把功能和实现功能的结构大致勾画出来,然后制作,接着测试、不断完善,以达到娱乐最大化,最贴近心中所想要达成的效果”、“我在弹球游戏的制作中添加了自己的想法,能够让弹球停下来,做完之后非常有成就感。但时间有限,没有办法展开写下我真切的感受,但是我确信我对App程序开发的热情非常高”、“可以有重力感应,当摇动手机时小球也能随着手机的摇动滚来滚去;当撞壁时能有声音并且速度变慢;可以加一些障碍物”。
修改调试自己编写的程序,是培养学生计算思维很关键的环节,收效很好,对此学生也深有体会。
从学生对作品的制作、测试、修改、拓展思考等方面,可以看出“游戏制作专题”深受学生的喜爱,他们乐在其中。
● 结束语
如今,那些顶级的电子游戏正在冲击虚拟与现实的界限,很多人无法抵抗其带来的诱惑与快感,但人们是玩家、消费者或看客。而诸如弹球、打乒乓球、打地鼠之类的手机游戏虽然很幼稚,学生们设计制作这样的手机游戏也许会更枯燥,但他们是创造者,是这类游戏的主宰。因此,只要是自己做出来的,哪怕是再简单的游戏他们也可以从创造中体验到乐趣和成就感。从实践效果来看,这样的专题单元设计很受学生欢迎,能够持续对App Inventor的热爱,将会形成持续的、积极的学习动机。
参考文献:
[1]Wing J M.Computational thinking[J].Communications of the ACM, 2006,49(3).
[2]董荣胜.计算思维及计算机导论[J].计算机科学, 2009,36(4).
[3]牟琴,谭良,周雄峻.基于计算思维的任务驱动式教学模式的研究[J].现代教育技术,2011(6).endprint
功能:画布上有9个洞,洞有固定位置,地鼠随机出现在洞里。玩家触摸到地鼠时,振屏,得分加1;玩家触摸到屏幕时,失分加1;单击Reset按钮时,得分与失分清零,重新开始。
难度等级:★★★★
兴趣等级:★★★★
知识内容:列表、For Each item in list循环、任意组件及属性值的引用、Z层坐标与多个精灵的遮挡关系。
● 一个游戏制作的教学设计范例摘选——弹球游戏
1.资源准备
(1)搭建好的离线开发环境及离线环境启动说明.doc。
(2)BallBounce.pdf(弹球游戏的参考文档)。
2.教学过程设计
(1)导入。
引导学生回忆小时候玩的弹玻璃球游戏,让学生说一说它的玩法。教师提出问题,“如果是用App Inventor来制作一个弹球的游戏,你会怎样定义它的功能?还需要学习什么知识?”
(2)小组讨论弹球游戏的功能与所需要的新知识。
(3)交流共享,形成一致意见。先做一个最简单的弹球游戏,即手指划动小球时,小球可按手指划动的方向和快慢移动,碰到边缘时会反弹回来。
需要的知识:如何能够让小球动起来?碰到边缘时如何判断?如何反弹?
(4)新知识学习。
Canvas画布组件:容器控件,是绘画、动画与游戏的制作场地。
Ball小球组件:可以按照设置的速度和时间间隔,在屏幕上自主运动。
应用小球的快速划动事件,获得的速度和方向作为小球运动的速度与方向。代码如上页图1。
在该事件中,edge是一个该事件自定义的局部变量(如图2),取值时应注意坐标、方位。反弹方法如图3所示。
碰撞检测:碰到边缘,调用反弹方法。
(5)根据定义功能,自主开发程序。
(6)模拟测试,交流共享并思考改进方法。
(7)教师小结所学知识点并点评学生作品。
(8)撰写自己想增加的功能和界面美化,进行二次开发。
● 游戏专题教学效果
经过3周的教学实践,我们发现学生对能够利用App Inventor制作手机游戏的课题内容非常感兴趣,用学生的话来说就是“当你玩自己做的游戏时,心情无比舒畅,感觉之前一切付出有了回报”。另外,从学生在课堂上的表现也可以看出来,没有一个学生去做别的事,都在非常认真地完成每一个游戏制作的任务,很多东西还有自己的改进想法。
其次,学生对知识的理解非常深刻,在每课的心得文本中学生写到:“学会用列表实现命令的循环,用接触到地鼠和画布时分别加减得分实现对地鼠和洞的区分;学会设置Z坐标,使地鼠不被洞遮住。增加了显示难度等级的设定,增加了游戏的公平性和可玩性”、“通过完善打地鼠游戏,增加了难度设置,修改了自己程序里的BUG,充分地感受到思想是进步的源泉”、“学会了自定义过程,不用再一遍遍地复制,简化了许多步骤。也学会了用touchsprite捕捉图像、调整timer的频数、随机定义地鼠的位置。通过改变timerInterval来改变地鼠移动的速度,增加了软件的可玩性和娱乐性”、“学会了运用edge属性判断球的碰撞落点,从而进行计分的操作,还学会了两个物体碰撞的判断”。
另外,通过每课文本奇思妙想部分的撰写,我们发现学生的编程思维得到了很好的锻炼和提高。学生说到:“这个乒乓球游戏可以扩展为打砖块、打水果、打兔子之类的游戏。可以添加在Ball碰撞图像精灵后图像精灵图片出现变化的功能。在制作一个游戏的过程中可先把功能和实现功能的结构大致勾画出来,然后制作,接着测试、不断完善,以达到娱乐最大化,最贴近心中所想要达成的效果”、“我在弹球游戏的制作中添加了自己的想法,能够让弹球停下来,做完之后非常有成就感。但时间有限,没有办法展开写下我真切的感受,但是我确信我对App程序开发的热情非常高”、“可以有重力感应,当摇动手机时小球也能随着手机的摇动滚来滚去;当撞壁时能有声音并且速度变慢;可以加一些障碍物”。
修改调试自己编写的程序,是培养学生计算思维很关键的环节,收效很好,对此学生也深有体会。
从学生对作品的制作、测试、修改、拓展思考等方面,可以看出“游戏制作专题”深受学生的喜爱,他们乐在其中。
● 结束语
如今,那些顶级的电子游戏正在冲击虚拟与现实的界限,很多人无法抵抗其带来的诱惑与快感,但人们是玩家、消费者或看客。而诸如弹球、打乒乓球、打地鼠之类的手机游戏虽然很幼稚,学生们设计制作这样的手机游戏也许会更枯燥,但他们是创造者,是这类游戏的主宰。因此,只要是自己做出来的,哪怕是再简单的游戏他们也可以从创造中体验到乐趣和成就感。从实践效果来看,这样的专题单元设计很受学生欢迎,能够持续对App Inventor的热爱,将会形成持续的、积极的学习动机。
参考文献:
[1]Wing J M.Computational thinking[J].Communications of the ACM, 2006,49(3).
[2]董荣胜.计算思维及计算机导论[J].计算机科学, 2009,36(4).
[3]牟琴,谭良,周雄峻.基于计算思维的任务驱动式教学模式的研究[J].现代教育技术,2011(6).endprint
功能:画布上有9个洞,洞有固定位置,地鼠随机出现在洞里。玩家触摸到地鼠时,振屏,得分加1;玩家触摸到屏幕时,失分加1;单击Reset按钮时,得分与失分清零,重新开始。
难度等级:★★★★
兴趣等级:★★★★
知识内容:列表、For Each item in list循环、任意组件及属性值的引用、Z层坐标与多个精灵的遮挡关系。
● 一个游戏制作的教学设计范例摘选——弹球游戏
1.资源准备
(1)搭建好的离线开发环境及离线环境启动说明.doc。
(2)BallBounce.pdf(弹球游戏的参考文档)。
2.教学过程设计
(1)导入。
引导学生回忆小时候玩的弹玻璃球游戏,让学生说一说它的玩法。教师提出问题,“如果是用App Inventor来制作一个弹球的游戏,你会怎样定义它的功能?还需要学习什么知识?”
(2)小组讨论弹球游戏的功能与所需要的新知识。
(3)交流共享,形成一致意见。先做一个最简单的弹球游戏,即手指划动小球时,小球可按手指划动的方向和快慢移动,碰到边缘时会反弹回来。
需要的知识:如何能够让小球动起来?碰到边缘时如何判断?如何反弹?
(4)新知识学习。
Canvas画布组件:容器控件,是绘画、动画与游戏的制作场地。
Ball小球组件:可以按照设置的速度和时间间隔,在屏幕上自主运动。
应用小球的快速划动事件,获得的速度和方向作为小球运动的速度与方向。代码如上页图1。
在该事件中,edge是一个该事件自定义的局部变量(如图2),取值时应注意坐标、方位。反弹方法如图3所示。
碰撞检测:碰到边缘,调用反弹方法。
(5)根据定义功能,自主开发程序。
(6)模拟测试,交流共享并思考改进方法。
(7)教师小结所学知识点并点评学生作品。
(8)撰写自己想增加的功能和界面美化,进行二次开发。
● 游戏专题教学效果
经过3周的教学实践,我们发现学生对能够利用App Inventor制作手机游戏的课题内容非常感兴趣,用学生的话来说就是“当你玩自己做的游戏时,心情无比舒畅,感觉之前一切付出有了回报”。另外,从学生在课堂上的表现也可以看出来,没有一个学生去做别的事,都在非常认真地完成每一个游戏制作的任务,很多东西还有自己的改进想法。
其次,学生对知识的理解非常深刻,在每课的心得文本中学生写到:“学会用列表实现命令的循环,用接触到地鼠和画布时分别加减得分实现对地鼠和洞的区分;学会设置Z坐标,使地鼠不被洞遮住。增加了显示难度等级的设定,增加了游戏的公平性和可玩性”、“通过完善打地鼠游戏,增加了难度设置,修改了自己程序里的BUG,充分地感受到思想是进步的源泉”、“学会了自定义过程,不用再一遍遍地复制,简化了许多步骤。也学会了用touchsprite捕捉图像、调整timer的频数、随机定义地鼠的位置。通过改变timerInterval来改变地鼠移动的速度,增加了软件的可玩性和娱乐性”、“学会了运用edge属性判断球的碰撞落点,从而进行计分的操作,还学会了两个物体碰撞的判断”。
另外,通过每课文本奇思妙想部分的撰写,我们发现学生的编程思维得到了很好的锻炼和提高。学生说到:“这个乒乓球游戏可以扩展为打砖块、打水果、打兔子之类的游戏。可以添加在Ball碰撞图像精灵后图像精灵图片出现变化的功能。在制作一个游戏的过程中可先把功能和实现功能的结构大致勾画出来,然后制作,接着测试、不断完善,以达到娱乐最大化,最贴近心中所想要达成的效果”、“我在弹球游戏的制作中添加了自己的想法,能够让弹球停下来,做完之后非常有成就感。但时间有限,没有办法展开写下我真切的感受,但是我确信我对App程序开发的热情非常高”、“可以有重力感应,当摇动手机时小球也能随着手机的摇动滚来滚去;当撞壁时能有声音并且速度变慢;可以加一些障碍物”。
修改调试自己编写的程序,是培养学生计算思维很关键的环节,收效很好,对此学生也深有体会。
从学生对作品的制作、测试、修改、拓展思考等方面,可以看出“游戏制作专题”深受学生的喜爱,他们乐在其中。
● 结束语
如今,那些顶级的电子游戏正在冲击虚拟与现实的界限,很多人无法抵抗其带来的诱惑与快感,但人们是玩家、消费者或看客。而诸如弹球、打乒乓球、打地鼠之类的手机游戏虽然很幼稚,学生们设计制作这样的手机游戏也许会更枯燥,但他们是创造者,是这类游戏的主宰。因此,只要是自己做出来的,哪怕是再简单的游戏他们也可以从创造中体验到乐趣和成就感。从实践效果来看,这样的专题单元设计很受学生欢迎,能够持续对App Inventor的热爱,将会形成持续的、积极的学习动机。
参考文献:
[1]Wing J M.Computational thinking[J].Communications of the ACM, 2006,49(3).
[2]董荣胜.计算思维及计算机导论[J].计算机科学, 2009,36(4).
[3]牟琴,谭良,周雄峻.基于计算思维的任务驱动式教学模式的研究[J].现代教育技术,2011(6).endprint