欢迎来到天天文库
浏览记录
ID:11498542
大小:211.00 KB
页数:11页
时间:2018-07-12
《实验五 扫雷游戏的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、闽江学院教案课程名称《Flash游戏编程》任课老师:肖刚上机实验须知实验名称:扫雷游戏的实现实验目的:利用二维编码方式编码地雷地图,然后基于二维地图实现扫雷游戏的各个部分的算法,最终实现扫雷游戏。实验环境:1)高档微机2)Windows操作系统中文版3)FlashCS3Professional中文版实验原理:地图是许多游戏的重要组成。小游戏例如俄罗斯方块、各种棋类游戏、搬运工游戏等,大型游戏例如英雄无敌、魔兽争霸,无不与地图紧密关联。一般来说,游戏中的地图是由地图元件、编码数据和基于编码的算法三个部分组成。例如下图是已经完成的扫雷游戏的截图:其地图(即游戏
2、中的地板方块组合)的三个部分分为为:地图元件、编码数据以及基于编码的算法地图元件就是游戏中的每个方块,它记录着是否有雷,位置所引,是否已经被打开,是否被插上旗帜以及是否爆炸等属性,状态和效果。可以采用角色设计思想设计。地图编码的作用其实是在地图元件与算法之间建立一个最简的沟通桥梁。我们可以基于编码方式设计算法,然后通过编码找到对应的元件,也可以从元件出发获取其编码值,然后用这个编码值参与算法过程。这里我们可以建立一个二维数组,每个数据项存储的是一个方块的引用。这样二维数组就是游戏的编码方式。一方面,我们可以基于二维数组的下标(即索引)找到每个方块,另一方面
3、,我们还要在每个方块中定义变量indexX和indexY,用来记录其索引值,当方块触发了某个事件(如鼠标点击),就可以通过读取这个方块的索引值从而确定它在二维数组中的位置。好的地图编码方式应该是即满足记录数据的需要,又是最简的。经验证明,二维数组是行之有效又简单的地图编码方式。基于二维编码上的扫雷算法包括:l编码与索引l布置雷区l随机分布地雷11闽江学院教案课程名称《Flash游戏编程》任课老师:肖刚l计算单元格周围雷数l无雷区自动扩张的设计l判断地雷是否已经全部扫除l人机交互部分的设计l设置难度级别l显示所有地雷详细介绍请看本章(第六章地图布置与地图相关
4、算法)的PPT文档。实验内容:模拟实现类似于Windows自带的小游戏“扫雷”。可以手动地设置难度级别,或者干脆直接设置地图的尺寸,和地雷的数量,然后开始游戏。实验步骤:1)制作方块角色很明显,扫雷游戏中的每一个方格,都是一个雷区单元角色的实例。这个雷区单元应该包含如下的成员:成员成员描述discovered是否被打开了haveMine是否有地雷haveFlag是否有旗帜i、j雷区单元所在的位置各个界面如未打开、显示地雷、爆炸、显示周围雷数等界面showMine()显示地雷界面showExplode()显示地雷爆炸界面showInit()显示初始化时的界面
5、showAround(num)显示地雷被排除的界面flag()显示/隐藏旗帜设计这样的一个雷区方格角色,对我们来说,已经是轻车熟路,为了节省篇幅,这里忽略具体的实现。已完成的方块角色的每一帧的内容如下图所示:这些画面简单明了。第一帧有初始化代码:vardiscovered:Boolean=false;varhaveMine:Boolean=false;varhaveFlag:Boolean=false;varline:int,row:int;functionshowMine(){discovered=true;gotoAndStop(4);}functio
6、nshowExplode(){11闽江学院教案课程名称《Flash游戏编程》任课老师:肖刚discovered=true;gotoAndStop(5);}functionshowInit(){gotoAndStop(2);discovered=false;}functionshowAround(num){discovered=true;gotoAndStop(num+6);}functionflag():Boolean{if(haveFlag==true){gotoAndStop(2);}else{gotoAndStop(3);}haveFlag=!hav
7、eFlag;returnhaveFlag;}第二帧为默认的状态,时间轴应该停止在这一帧。代码:stop();至此我们已经完成这个角色的设计,在库中选中这个方块剪辑,点击右键,选择“链接…”,将其链接为Cell输出。如下图所示:1)布置场景扫雷游戏只有一帧。时间轴如图所示:11闽江学院教案课程名称《Flash游戏编程》任课老师:肖刚界面内容如下图所示:其中各个文本框的实例名称分别为:txtLineCount、txtRowCount、txtMineCount、txtMineLeft。开始按钮的实例名称为:bt_start,预设下拉框的实例名称为:mode。预设
8、下拉框内的数据选项为:自此完成了整个界面的设计。1)编写代码11闽
此文档下载收益归作者所有