论文部分内容阅读
摘要:本文从理论和技术两方面,以教育游戏案例《飞机投弹游戏》为例,对实现教育游戏动态难度调节的相关要素进行了分析。
关键词:教育游戏;动态任务;Flash
目前国内关于教育游戏的研究主要集中在探讨教育游戏及其相关概念的界定、游戏的教育价值问题、教育游戏软件的设计和开发理论等。这些研究的关键在于探讨教育和游戏如何结合,寻找教育游戏中教育性和游戏性的平衡点。[1]但关于教育游戏设计案例的研究很少。本文从理论和技术两方面,对实现教育游戏动态难度调节的相关要素进行了分析,运用Flash设计出一个教育游戏案例《飞机投弹游戏》,希望借用此游戏形式,为学生营造一种愉悦的学习环境,真正达到寓教于乐。
● 教育游戏动态任务概述
1.教育游戏
教育游戏到目前为止还没有一个明确的定义。一种观点认为教育游戏在本质上是具有一定教育目的并具有一定可玩性的游戏。这种观点强调教育游戏实质上是一种游戏,知识是融入到游戏中的,学习者在游戏过程中学习到了知识并且掌握了技能,提高了能力。另一种观点认为教育游戏是把游戏中一些有利于引起学习者兴趣、增加学习者关注的因素引入到教育软件中,是一种带有趣味性的学习软件,这种观点实质上是强调教育游戏是一种教育软件。[2]教育游戏不同于传统意义上的教育软件,也不同于一般娱乐性的游戏,也不是二者简单相加,它是知识与娱乐的融合,不仅能够让教育游戏的玩家愉快地获取知识,而且能促进深度学习,有效地获取知识、技能,帮助学习者学会学习、学会发现、学会合作、学会独立解决问题。
2.教育游戏动态任务
在教育游戏的研究领域,对教育游戏的动态任务目前还没有一个统一的概念,多数引用的是对普通游戏动态任务调节的概念描述。鉴于教育游戏具有的教育和游戏两个本质的特殊性,本文认为教育游戏动态任务是指在教育游戏中,影响游戏难度的游戏性因素和教育性因素会根据游戏者的能力进行调整,以使游戏者的能力与游戏难度达到平衡并使这种平衡得以保持,进而提升游戏者在游戏中的沉浸体验,促进游戏者知识的习得与应用。
3.教育游戏动态任务实现的研究意义
该如何利用信息化的手段实现千百年前已提出的“寓教于乐”的教育思想,[3]让学生的学习变成快乐、自愿的事情?通过分析得出,问题主要集中在教育游戏的难度和学生的个人知识水平和能力不相适应。因此,教育游戏应适应性地动态调控游戏难度,学生参与游戏后,面对与自己技能相适应的挑战,便会产生沉浸感,沉浸状态下的内在愉悦和成就感会成为学生在游戏中学习的动力,学生将快速调动先前技能来克服所面临的挑战,在完成游戏任务的同时也完成了其承载的学习内容,学生的操作技能更加熟练,知识水平也得到了巩固和提升,新的“挑战-技能”[4]平衡关系又将建立,学生会不断地去接受新的挑战,在新的挑战中提高技能。
因此,教育游戏动态任务的实现研究将有利于延长学生在教育游戏中的沉浸时间,进而有利于教育目标的实现,大大提高学习效率。
● 相关理论基础
1.学习理论——沉浸理论
沉浸理论是Mihaly Csikszentmihalyi(芝加哥大学心理学教授)首次提出,主要用于解释当人们在进行某些日常活动时为何会完全投入情境中,集中注意力,并且过滤掉所有不相关的知觉,进入一种沉浸的状态。[5]沉浸是学习、工作时的最佳状态,它带来的内在满足感能使人们在从事任务时满怀兴趣,忘记疲劳,不停探索,不断达到新的目标。
2.游戏理论——弗洛伊德的宣泄理论
弗洛伊德认为游戏是满足愿望和克服创伤性事件的手段。游戏使儿童能逃脱现实的强制和约束,给他们提供安全的环境,使他们发泄那些在现实中不被接受的,以满足其追求快乐的愿望。[6]通过弗洛伊德的宣泄理论可知,游戏是人们自愿参加的活动,它能锻炼和培养游戏者的某种能力,因此让学习者通过游戏的方式进行学习是有可能的,而且也能够使其自愿、自觉、愉快地参加学习活动,而这恰恰是使用传统教学所欠缺的。
● 《飞机投弹游戏》案例剖析
1.需求分析
本文以“抛物运动”为游戏内容,结合新的物理课程标准,设计一个“飞机投弹游戏”教育游戏,引发学生对物理问题的好奇心和求知欲,使学生在游戏中掌握和熟悉抛物运动这个知识点,进而提高学习效果。
2.游戏类型的选择
教育游戏一般分为两种类型,一种是知识强化型游戏,这类游戏内容单一,但知识点相对集中,反复练习能够强化对知识点的记忆;另一种是支持学习者自主学习的知识探究型游戏,游戏本身包含一些物理知识,学习者沉浸于游戏情境中,扮演游戏中的某个角色,完成设定的学习任务。[7]本文中“飞机投弹游戏”主要是为了让学生探索抛物运动的规律以及强化抛物运动这个知识点,所以属于知识强化型游戏。
3.游戏开发工具的选择
本教育游戏案例采用Flash技术开发教育游戏,实现了游戏活动的动态难度调节。开发语言是ActionScript,运行平台是IE flashplayer10。
4.案例概述文档
游戏初始,玩家设置飞机轮船初速度及飞机的高度。飞机轮船在向前运动的过程中,当两者的水平距离达到一个唯一的固定值时,学生点击投弹按钮,飞机就会发射一枚导弹,做平抛运动下落打中轮船,游戏成功。假若水平距离没有达到或超过了这个唯一的固定值时,则无法击中轮船,游戏失败。如果学生未掌握相关知识,则无法计算出这个唯一的水平距离时,也无法完成游戏,此时可点击“游戏帮助”查看这个唯一的水平距离值。
游戏规则如下,在一分钟内,多次变更飞机轮船初速度和飞机的高度,若累计得分高,说明他对平抛运动的相关知识已掌握,在超过时间后游戏自动结束。游戏结束后,若学生对这一知识点还没有掌握,可以选择再玩一次;若得分很高,说明已熟练掌握这个知识点,可以选择进入课后练习,完成这个知识点相关的习题,进一步提高玩家的学习效果。[8] 5.案例脚本文档
本案例脚本文档,包括开始、运行、游戏帮助、结束、习题,现主要针对游戏运行及游戏帮助中的重要显示对象,对其属性和操作进行描述。各对象其功能及实现的关键代码如下:
(1)帮助计算程序
/:ds1 = Number(eval("/:v1"));
/:ds2 = Number(eval("/:v2"));
/:ds3 = Number(eval("/:h"));
/:ds = int((Number(eval("/:v1")) - Number(eval("/:v2"))) * Math.sqrt(2.000000E-001 * Number(eval("/:h"))) * 100) / 100 add "m";
(2)飞机程序(fj)
setProperty("/:fj", _x, -120);
sf = -150;
t = 1.350000E 001;
setProperty("/:fj", _y, 3.868000E 002 - 6.200000E 000 * Number(eval("/:h")));
if (sf < 660)
{ setProperty("/:fj", _x, sf);
sf = sf Number(eval("/:v1")) / 10;}
else{
gotoAndPlay(1);}
(3)导弹按钮(zd)
setProperty("/:zd", _x, getProperty("/:fj", _x));
setProperty("/:zd", _y, getProperty("/:fj", _y));
setProperty("/:zd", _visible, 1);
y1 = 3.678000E 002 - 6.173333E 000 * Number(eval("/:h"));
t1 = 0;
Math.sqrt(2 * Number(eval("/:h")) / 10);
setProperty("/:zd", _visible, 1);
i = 1;
if (y1 <= 3.678000E 002
关键词:教育游戏;动态任务;Flash
目前国内关于教育游戏的研究主要集中在探讨教育游戏及其相关概念的界定、游戏的教育价值问题、教育游戏软件的设计和开发理论等。这些研究的关键在于探讨教育和游戏如何结合,寻找教育游戏中教育性和游戏性的平衡点。[1]但关于教育游戏设计案例的研究很少。本文从理论和技术两方面,对实现教育游戏动态难度调节的相关要素进行了分析,运用Flash设计出一个教育游戏案例《飞机投弹游戏》,希望借用此游戏形式,为学生营造一种愉悦的学习环境,真正达到寓教于乐。
● 教育游戏动态任务概述
1.教育游戏
教育游戏到目前为止还没有一个明确的定义。一种观点认为教育游戏在本质上是具有一定教育目的并具有一定可玩性的游戏。这种观点强调教育游戏实质上是一种游戏,知识是融入到游戏中的,学习者在游戏过程中学习到了知识并且掌握了技能,提高了能力。另一种观点认为教育游戏是把游戏中一些有利于引起学习者兴趣、增加学习者关注的因素引入到教育软件中,是一种带有趣味性的学习软件,这种观点实质上是强调教育游戏是一种教育软件。[2]教育游戏不同于传统意义上的教育软件,也不同于一般娱乐性的游戏,也不是二者简单相加,它是知识与娱乐的融合,不仅能够让教育游戏的玩家愉快地获取知识,而且能促进深度学习,有效地获取知识、技能,帮助学习者学会学习、学会发现、学会合作、学会独立解决问题。
2.教育游戏动态任务
在教育游戏的研究领域,对教育游戏的动态任务目前还没有一个统一的概念,多数引用的是对普通游戏动态任务调节的概念描述。鉴于教育游戏具有的教育和游戏两个本质的特殊性,本文认为教育游戏动态任务是指在教育游戏中,影响游戏难度的游戏性因素和教育性因素会根据游戏者的能力进行调整,以使游戏者的能力与游戏难度达到平衡并使这种平衡得以保持,进而提升游戏者在游戏中的沉浸体验,促进游戏者知识的习得与应用。
3.教育游戏动态任务实现的研究意义
该如何利用信息化的手段实现千百年前已提出的“寓教于乐”的教育思想,[3]让学生的学习变成快乐、自愿的事情?通过分析得出,问题主要集中在教育游戏的难度和学生的个人知识水平和能力不相适应。因此,教育游戏应适应性地动态调控游戏难度,学生参与游戏后,面对与自己技能相适应的挑战,便会产生沉浸感,沉浸状态下的内在愉悦和成就感会成为学生在游戏中学习的动力,学生将快速调动先前技能来克服所面临的挑战,在完成游戏任务的同时也完成了其承载的学习内容,学生的操作技能更加熟练,知识水平也得到了巩固和提升,新的“挑战-技能”[4]平衡关系又将建立,学生会不断地去接受新的挑战,在新的挑战中提高技能。
因此,教育游戏动态任务的实现研究将有利于延长学生在教育游戏中的沉浸时间,进而有利于教育目标的实现,大大提高学习效率。
● 相关理论基础
1.学习理论——沉浸理论
沉浸理论是Mihaly Csikszentmihalyi(芝加哥大学心理学教授)首次提出,主要用于解释当人们在进行某些日常活动时为何会完全投入情境中,集中注意力,并且过滤掉所有不相关的知觉,进入一种沉浸的状态。[5]沉浸是学习、工作时的最佳状态,它带来的内在满足感能使人们在从事任务时满怀兴趣,忘记疲劳,不停探索,不断达到新的目标。
2.游戏理论——弗洛伊德的宣泄理论
弗洛伊德认为游戏是满足愿望和克服创伤性事件的手段。游戏使儿童能逃脱现实的强制和约束,给他们提供安全的环境,使他们发泄那些在现实中不被接受的,以满足其追求快乐的愿望。[6]通过弗洛伊德的宣泄理论可知,游戏是人们自愿参加的活动,它能锻炼和培养游戏者的某种能力,因此让学习者通过游戏的方式进行学习是有可能的,而且也能够使其自愿、自觉、愉快地参加学习活动,而这恰恰是使用传统教学所欠缺的。
● 《飞机投弹游戏》案例剖析
1.需求分析
本文以“抛物运动”为游戏内容,结合新的物理课程标准,设计一个“飞机投弹游戏”教育游戏,引发学生对物理问题的好奇心和求知欲,使学生在游戏中掌握和熟悉抛物运动这个知识点,进而提高学习效果。
2.游戏类型的选择
教育游戏一般分为两种类型,一种是知识强化型游戏,这类游戏内容单一,但知识点相对集中,反复练习能够强化对知识点的记忆;另一种是支持学习者自主学习的知识探究型游戏,游戏本身包含一些物理知识,学习者沉浸于游戏情境中,扮演游戏中的某个角色,完成设定的学习任务。[7]本文中“飞机投弹游戏”主要是为了让学生探索抛物运动的规律以及强化抛物运动这个知识点,所以属于知识强化型游戏。
3.游戏开发工具的选择
本教育游戏案例采用Flash技术开发教育游戏,实现了游戏活动的动态难度调节。开发语言是ActionScript,运行平台是IE flashplayer10。
4.案例概述文档
游戏初始,玩家设置飞机轮船初速度及飞机的高度。飞机轮船在向前运动的过程中,当两者的水平距离达到一个唯一的固定值时,学生点击投弹按钮,飞机就会发射一枚导弹,做平抛运动下落打中轮船,游戏成功。假若水平距离没有达到或超过了这个唯一的固定值时,则无法击中轮船,游戏失败。如果学生未掌握相关知识,则无法计算出这个唯一的水平距离时,也无法完成游戏,此时可点击“游戏帮助”查看这个唯一的水平距离值。
游戏规则如下,在一分钟内,多次变更飞机轮船初速度和飞机的高度,若累计得分高,说明他对平抛运动的相关知识已掌握,在超过时间后游戏自动结束。游戏结束后,若学生对这一知识点还没有掌握,可以选择再玩一次;若得分很高,说明已熟练掌握这个知识点,可以选择进入课后练习,完成这个知识点相关的习题,进一步提高玩家的学习效果。[8] 5.案例脚本文档
本案例脚本文档,包括开始、运行、游戏帮助、结束、习题,现主要针对游戏运行及游戏帮助中的重要显示对象,对其属性和操作进行描述。各对象其功能及实现的关键代码如下:
(1)帮助计算程序
/:ds1 = Number(eval("/:v1"));
/:ds2 = Number(eval("/:v2"));
/:ds3 = Number(eval("/:h"));
/:ds = int((Number(eval("/:v1")) - Number(eval("/:v2"))) * Math.sqrt(2.000000E-001 * Number(eval("/:h"))) * 100) / 100 add "m";
(2)飞机程序(fj)
setProperty("/:fj", _x, -120);
sf = -150;
t = 1.350000E 001;
setProperty("/:fj", _y, 3.868000E 002 - 6.200000E 000 * Number(eval("/:h")));
if (sf < 660)
{ setProperty("/:fj", _x, sf);
sf = sf Number(eval("/:v1")) / 10;}
else{
gotoAndPlay(1);}
(3)导弹按钮(zd)
setProperty("/:zd", _x, getProperty("/:fj", _x));
setProperty("/:zd", _y, getProperty("/:fj", _y));
setProperty("/:zd", _visible, 1);
y1 = 3.678000E 002 - 6.173333E 000 * Number(eval("/:h"));
t1 = 0;
Math.sqrt(2 * Number(eval("/:h")) / 10);
setProperty("/:zd", _visible, 1);
i = 1;
if (y1 <= 3.678000E 002