扫雷游戏实验报告精要.docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
扫雷游戏实验报告精要

课程设计  班 级: 姓 名: 学 号: 指导教师: 成 绩: 目录 1.任务概述------------------------------------3 2.功能及模块设计------------------------------3 3.数据结构与算法设计--------------------------4 4.程序描述------------------------------------6 5.设计感想------------------------------------9 6.参考文献------------------------------------10 附录1 程序源码--------------------------------10 1.任务概述 1.1设计题目 扫雷游戏 1.2规则要求 1) 图形用户界面。 2) 类似 windows 附件的扫雷游戏。 3) 其余功能自行扩展。 1.3目标 锻炼自学能力、办公软件操作能力、程序设计能力、培养学生的编程思想、编程兴趣。 1.4运行环境 Java , esclipse 1.5条件与限制 1)图形界面美观大方。 2)功能必须正确,扩展功能自行丰富。 3)程序设计要注意健壮性。 2.功能及模块设计 2.1具体的功能介绍 过程分析:在屏幕中显示一个雷区,雷区范围内预先埋设了一定数量的随机分布的地雷;玩家可以对雷区进行标记,如果能正确标记出雷区中的所有地雷,则游戏胜利;如果踩雷,则游戏失败。 1)开局:开局默认初级难度,有三个难度供选择-初级:12*12、中级:15*15、高级:20*20;各级地雷数分别为:10,25,50;雷区每个方块下或有地雷,或者没有地雷; 2)挖雷:将鼠标移动到某个方格上,并点击鼠标左键,可挖开它;若所揭开方块下有雷,则游戏失败;如果没有雷,则显示数字,数字为这个方格周围八个方格的雷的数目。 3)标记地雷:在鼠标所在的某个方格上右击一次或两次,则标记该区域;一次表示认为此区域有雷,两次表示不确定这个区域是否有雷。每标记一个区域,则显示的地雷数减1。 4)判断胜负:如果挖出了其它所有无雷区,或者标记出了所有的雷区,则游戏胜利。如果在游戏中挖到任何地雷则游戏失败。 2.2软件模块划分 表1-1 1)选择游戏难度 2)重新开始按钮 3) 存放未找到的雷的个数 4)雷区 3.数据结构与算法设计 3.1数据结构 在存放雷区信息时用到了二维数组。 3.2算法 3.2.1 随机函数 随机布雷扫雷游戏要求在M 行、N 列的一块网格游戏区内随机地布上MineNum 个雷,且MineNum 的取值应该小于M 和N 的乘积。这可以在一张M×N 的网格上通过满足均匀分布的随机算法实现。其中有MineNum 个网格是雷区,剩下的网格为非雷区。游戏的目标是尽可能快地找到所有的雷区,而不踩到地雷。JAVA 提供了实现随机算法的类Math,通过Math 类的random () 方法,这可以很方便的实现随机布雷功能。这可以通过以下的代码实现随机布雷算法。 for (int i = 0; i mineNum; ) { int x = (int) (Math.random() * (int) (Math.sqrt(BlockNum) - 1)); int y = (int) (Math.random() * (int) (Math.sqrt(BlockNum) - 1)); if (mineButton[x][y].isMine != true) { mineButton[x][y].isMine = true; i++; } } 3.2.2计算点击位置周围雷的数目 扫雷游戏中相邻的九个格子关系密切,因此需要一个简便的算法对这九个格子进行遍历。 (i-1,j-1) (i-1,j) (i-1,j+1) (I,j-1) (i,j) (I,j+1) (i+1,j-1) (i+1,j) (i+1,j+1) 可以用以下算法来实现: for (int x = i - 1; x i + 2; x++) { for (int y = j - 1; y j + 2; y++) { if ( ( (x != i) || (y != j)) (x = 0) (y = 0) …………………..

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档