扫雷c语言程序设计实验报告,《扫雷游戏实验报告.docx

《扫雷游戏实验报告

课程设计软件综合课程设计班 级:姓 名:学 号:指导教师:成 绩:电子与信息工程学院信息与通信工程系目录1.任务概述------------------------------------32.功能及模块设计------------------------------33.数据结构与算法设计--------------------------44.程序描述------------------------------------65.设计感想------------------------------------96.参考文献------------------------------------10附录1 程序源码--------------------------------101.任务概述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-11)选择游戏难度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)………………….. }3.2.2 递归算法无雷区自动翻开,点击一个位置,如果是0,也即是无雷,那么就翻开他的上下左右8个格子,然后对这八个格子进行检查,如果当中某个格子也是0,那么继续对这格子的上下左右进行检查,如此反复。 递归算法(){周围有地雷&&未打开 {打开方块标记该块地雷数量 }周围没有地雷

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值