基于Flash益智游戏“学字母,打气球”的设计与开发

时间:2022-09-05 12:20:12

基于Flash益智游戏“学字母,打气球”的设计与开发

摘 要:为了让儿童可以在游戏中有所收获,我们要利用儿童爱玩游戏和对世界充满好奇心的特点,开发适合于他们玩的教育游戏,做到寓教于乐。本文论述了制作一个基于Flash益智游戏“学字母,打气球”的设计与开发的详细过程。通过这个打字游戏,可以让学龄前儿童在玩游戏的同时,熟悉键盘字母键的位置,并且学习英文字母“A―Z”的发音。此外这个游戏可以通过游戏时间和速度的改变,来训练儿童对英文字母的反应速度和对键盘的熟悉程度。

关键词:Flash;游戏;功能模块

中图分类号:G642 文献标识码:A

Abstract:In order for children can be harvested in the game,we want to take advantage of children playing games and the characteristics of the world is full of curiosity,develop appropriate for them to play educational games,so entertaining.This article discusses the production of a Flash-based puzzle game"learning letters,playing balloon",the detailed process design and development.Through this typing game that lets preschoolers play the game at the same time,the familiar position of letter keys, and learning the alphabet"A-Z"pronunciation.In addition,this game can change the game time and speed,to train children's reaction speed and familiarity with the english letters on the keyboard.

Keywords:flash;game;function module

1 引言(Introduction)

在网络智能化的今天,游戏也开始成为大众包括学龄前儿童很重要的一种消遣方式,其中Flash游戏由于体积小,下载方便和容易玩尤为受欢迎。所以可以利用儿童喜爱游戏的天性把教育和游戏结合,开发一个教育游戏,让儿童在游戏中学习,寓教于乐,于是游戏和学习这两个看似矛盾的事物结合就成了Flash游戏的又一个发展方向,其中打字游戏就是一款很好的教育游戏[1]。本文详细论述了制作基于Flash益智游戏“学字母,打气球”的设计与开发的过程。通过这个打字游戏,可以让学龄前儿童在玩游戏的同时,熟悉键盘字母键的位置,并且学习英文字母“A-Z”的发音。

2 “学字母,打气球”游戏的整体设计("Learning letters,playing balloon"game overall design)

对“学字母,打气球”这个打字游戏的整体设计主要包括游戏框架、游戏介绍、游戏玩法和游戏技术分析的设计。游戏框架又可以分为四个设计模块:游戏说明模块、游戏参数设置模块、游戏进行模块和游戏结束模块,每两个模块之间以按钮进行连接,完成整个游戏流程的贯穿。

2.1 游戏说明模块

游戏说明模块是打开运行这个Flash游戏就会出现的模块,由于多数学龄前儿童是初次接触打字游戏,所以需要一个游戏的操作说明来介绍游戏的名称和游戏的操作规则,这是每一个游戏都必不可少的一个模块。模块里面除了有游戏的操作说明以外,还应该有一个进入下一个模块的“开始”按钮。

2.2 游戏参数设置模块

单击游戏说明模块里的“开始”按钮后进入游戏参数设置模块,在这个模块里,由三个组件来实现游戏的参数设置,玩家可以设置游戏的等级、游戏的时间和气球数量。游戏等级分为三级,不同的游戏等级会有不同的游戏速度,即气球上飘的速度;游戏时间可以设置1―5分钟,即限定玩家每次游戏的最长时间,时间一到就会停止游戏,进入到游戏结束模块;气球数量是指在同一时间内舞台上出现的最多气球数量。

2.3 游戏进行模块

单击游戏参数设置模块里的“OK”按钮后进入游戏进行模块,开始进行游戏,气球从舞台下方随机出现,每个气球上都带有一个字母,气球颜色和气球上的字母都是随机的。看到气球上的字母时敲击键盘上相应的字母,气球就会破裂,同时发出相应字母的读音,然后气球上的字母下落直到落出舞台。在游戏舞台上方有一个字数统计、准确率和剩余时间的显示,以动态文本框来实现。字数统计的是玩家敲击键盘的次数,准确率则以玩家击中的次数和玩家敲击键盘的次数的比率来计算,剩余时间是根据玩家的参数设定来倒数,剩余时间为零时进入游戏结束模块。

2.4 游戏结束模块

当剩余时间结束后游戏进入结束模块,在这个模块里会计算出玩家在这次游戏的打字速度,即一分钟打了几个字和打字的准确率,以及一个“继续”按钮,单击继续按钮会回到第二个模块即游戏参数设置模块再进行游戏参数设置,如此循环。如果不想继续游戏,直接关闭窗口即可。

游戏中音频效果的选择是很重要的,在这个打字游戏中,音频主要是A―Z这26个英文字母的标准发音,每次打破游戏界面中的气球时都会发出相应气球上带有的英文字母的发音,从而对玩家起到耳濡目染的作用,让学龄前儿童在游戏中受到英文字母发音潜移默化的影响,为学龄前儿童学习英文字母起到一定的辅助作用。

3 游戏主要元件素材的设计(The main components

of the material design game)

声音素材是通过录音之后再经音频处理软件Audition处理之后保存导入到库面板的,本游戏中用到的声音元件有26个,即26个英文字母A―Z的发音,分别以相应的英文字母命名,文件类型为“.MP3”,声音文件主要是用于玩家单击字母键盘后调用相应的声音文件并播放。

创建5个影片剪辑元件,分别命名为“character”

“edge”“skin”“气球”和“得分榜”。在“character”元件中创建逐帧动画,共有26帧,按顺序每一帧为一个大写英文字母,并在第一帧的动作脚本中写上“stop();”。在“edge”元件中画出一个心形气球的轮廓,不用填充色彩。

在“skin”元件中的第一帧画出一个没有边框的心形气球,第二帧至第五帧绘制气球爆炸开的过程,并在第二帧输入气球爆炸时调用声音文件的代码:

stage.addEventListener(KeyboardEvent.KEY_DOWN,onPressKey);

function onPressKey(k:KeyboardEvent) {

var index=k.keyCode-65;

if (index==0) { var A:ASound = new ASound(); A.play(); }

else { if (index==1) { var B:BSound = new BSound(); B.play(); }

通过键控代码确定按键的索引,判断玩家的按键操作,并根据玩家操作调用相应的声音文件,如keycode-65=0即玩家按A键时则调用声音文件A,这是通过onPressKey函数和if函数来实现的。

在“气球”元件中,创建四个图层分别命名为“文字”“气球外框”和“气球皮肤”和“action”,然后对应在图层第一帧把“character”“edge”“skin”元件拉入元件编辑区,并分别设置三个对象的实例名称为edge、skin、txt_char,形成一个带字母的气球元件,然后在“action”图层第一帧输入代码设置气球的各种初始状态,包括气球的速度、气球的索引和重力加速度。在第二帧输入代码设置气球飘出舞台和打落的字母掉出舞台,第三帧代码为“gotoAndPlay(2);”。在库中选中气球元件,右击选中“为ActionScript导出”复选框,设置其链接名称为Balloon。并在“气球”元件第一帧添加动作脚本代码:

var index:int;

var g:Number;

stop();

设置气球的各个初始状态包括气球上升的速度、加速度,索引和气球的颜色,以及设置气球破裂后的字母掉落的速度。在“气球”元件第二帧添加脚本代码[2]:

this.y += speed; if (this.y

this.y = 420; init(); }

if (this.y>=440) { init(); }

判断气球是否飘出舞台和打落的字母是否掉出舞台,并作出相应的反应。在“气球”元件第三帧添加脚本代码:gotoAndPlay(2);。

4 游戏功能模块的设计和实现(Design and

implementation of functional modules game)

设置舞台背景尺寸为“550*400”像素,在主场景的时间轴面板上创建三个图层,分别命名为“背景”“按钮”和“action”,把库面板中的“背景”拉入背景图层第一帧,并延续到第四帧。

4.1 游戏说明模块

在“按钮”图层第一帧用文本工具、矩形工具绘制游戏的说明界面,即显示游戏名称、游戏说明,并把库面板中的开始按钮拖动到游戏说明下方,命名“开始”按钮的实例名称为“bt_start”。

在主场景“action”图层第一帧输入代码,设置游戏参数的默认初始值并创建气球数组:

var maxCount:int=5;

var timer:Timer;

以上代码用以设置游戏默认参数,即默认设置游戏等级为1级,游戏时间为一分钟,舞台最多气球数量为5个,之后可再根据游戏者的意愿再进行更改。

var balloonList:Array=new Array();

for (var i=0; i

var balloon:Balloon=new Balloon();

balloon.init();

addChild(balloon);

}

stop();

以上代码用来创建26个英文字母所对应的气球数组[3]。

bt_start.addEventListener(MouseEvent.CLICK,startGame);

function startGame(evt:MouseEvent) { gotoAndStop("setting");}

以上代码是响应玩家单击“开始”按钮的操作,即跳转到游戏参数设置模块。

4.2 游戏参数设置模块

在“按钮”图层第二帧显示游戏设置界面,提供游戏参数设置,利用三个组合框组件来设置游戏速度等级、游戏时间和同时在舞台上的气球最大数量,在参数栏中设置数据项(DataProvider)。设置三个组合框的实例名称分别为cmb_speed、cmb_time、cmb_maxCount、设置OK按钮实例名称为“bt_OK”。

在主场景“action”图层第二帧输入以下代码:

stop();

bt_OK.addEventListener(MouseEvent.CLICK,init);

function init(evt:MouseEvent) {

matchCount=0; loseCount=0;

speedLevel=int(cmb_speed.value);

time=int(cmb_time.value);

maxCount=int(cmb_maxCount.value);

timeLeft=time*60;

timer= new Timer(1000, timeLeft);

timer.start();

for (var i=0; i

MovieClip(balloonList[i]).init(i); }

gotoAndStop("playing"); }

这一帧的代码是设置根据玩家设置的游戏参数,初始化游戏的各个变量并响应玩家单击“OK”按钮的操作,进入游戏。

4.3 游戏进行模块

“按钮”图层第三帧为游戏进行界面,在背景上增加了游戏成绩的动态显示,包括字数、准确率和剩余时间的显示,动态显示内容用动态文本框来实现,并分别给这三个动态文本框设置一个实例名称。在主场景“action”图层第三帧输入代码实现游戏的进行。

function onPressKey(k:KeyboardEvent) {

//通过键控代码确定按键的索引

var index=k.keyCode-65;

if (index26) {

loseCount++;

} else {

if (balloonList[index].inStage==true)

{ //这个字母键正好在舞台上

matchCount++;

balloonList[index].bomb();

} else {

//这个字母不在舞台上

loseCount++;

} }

updateView(); }

通过键控代码确定按键索引,侦听玩家敲击键盘的事件,首先判断玩家敲击的是不是字母键,如果是再判断玩家按的是哪个键,并依据按键和舞台上的气球情形等判断应当得分或失分,这是通过onPressKey函数实现的。

function blast(evt:Event) {

if (Math.random()*100/speedLevel>5) {

return;} }

//随机寻找一个不在舞台上的气球

do {

i=int(Math.random()*26);

} while (balloonList[i].idle==false);

trace("blast"+i);

//产生一个新的气球

MovieClip(balloonList[i]).blast(speedLevel);

}

function loseBalloon() {

loseCount++;

if (timeLeft>0) {

updateView();

}

}

按一定的随机时间发射新的气球,并且用do……while……这个循环语句来控制随机气球的发射,它控制着上飘气球的数量和发射速度,通过blast函数来实现。

4.4 游戏结束模块

“按钮”图层第四帧是用来显示最后的游戏成绩。以动态文本框来显示打字速度和准确率,分别给这两个动态文本框设置一个实例名称,设置“继续”按钮的实例名称为“bt_continue”。

在主场景“action”图层第四帧输入代码:

bt_continue.addEventListener(MouseEvent.CLICK,startGame);

txt_typeSpeed.text=String(Math.round((matchCount+loseCount)/time));

txt_finallyPercent.text=String(int(100*matchCount/(matchCount+loseCount)));

这一帧的代码用来显示最后的成绩,等待玩家单击“继续”按钮的操作,并响应玩家的操作。

完成这个游戏的制作以后,通过单击菜单栏里的“文件”,选择“设置”命令,选中“Flash(.swf)”、“Windows放映文件(.exe)”后单击“”和“确定”按钮,即在Flash源文件所在文件夹生成“.swf”和“.exe”的文件。

5 结论(Conclusion)

以上论述了制作一个基于Flash益智游戏“学字母,打气球”的设计与开发的详细过程。通过这个打字游戏,可以让学龄前儿童在玩游戏的同时,熟悉键盘字母键的位置,并且学习英文字母“A―Z”的发音。此外这个游戏可以通过游戏时间和速度的改变,来训练儿童对英文字母的反应速度和对键盘的熟悉程度。希望通过介绍这个游戏设计的过程,能够起到抛砖引玉的作用,让更多的人投入到有益于儿童的益智游戏的设计中来。

参考文献(References)

[1] 钱琼,郭力平.儿童认知风格与游戏的相关研究综述[J].幼儿教育,2006,(5):26-28.

[2] 肖刚.Flash游戏编程教程[M].北京:清华大学出版社,2008:83-84;91-92.

[3] 王愉,等.交互程序设计书Flash ActionScript 3.0溢彩编程[M].北京:清华大学出版社,2010:63-64.

作者简介:

郑 深(1979-),男,硕士,讲师.研究领域:教育信息技术应用.

上一篇:简论数学学习与数学课程改革 下一篇:应用于实验教学的五子棋人机对弈系统