扫雷游戏-课程设计报告

上传人:第*** 文档编号:32824633 上传时间:2018-02-12 格式:DOC 页数:27 大小:416.34KB
返回 下载 相关 举报
扫雷游戏-课程设计报告_第1页
第1页 / 共27页
扫雷游戏-课程设计报告_第2页
第2页 / 共27页
扫雷游戏-课程设计报告_第3页
第3页 / 共27页
扫雷游戏-课程设计报告_第4页
第4页 / 共27页
扫雷游戏-课程设计报告_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《扫雷游戏-课程设计报告》由会员分享,可在线阅读,更多相关《扫雷游戏-课程设计报告(27页珍藏版)》请在金锄头文库上搜索。

1、JAVA 课 程 设 计题目: 扫 雷 游 戏 院(系) 计算机信息工程学院 专 业 网络工程 班 级 13 级网络工程 1班 学生姓名 方琴 刘莉虹 程子卿 薛中意 设计时间 2015 年 8月 指导教师 万中英 提交日期 2015 年 10月 8日 摘要扫雷是一款大众类的益智小游戏。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷。先任意点开少量的方格,没有爆炸时,会出现一个数字,这个数字代表的意思是以它为中心的 9 个格子内所有雷的个数。一般围在一堆数字中间的有可能是雷,你在你认为是雷的那里插旗,就可以把它设定为雷,然后在数字区用鼠标左右键双击,可以打开非雷区

2、,等打开所有非雷区,你就赢了。采用 GUI 界面设计,窗口定位,绘图机制,鼠标监听等 Java技术。用户可以自己选择地雷的数量,地雷随机分布在 17*24 的方块矩阵中,地雷数量越多,难度越大。鼠标放在方格上,单击鼠标左键开始游戏,按空格键插旗。如果插旗错误,或是点击到了地雷,则游戏失败。1 引言1.1 该设计的目的及意义1.2 该设计的要求1.3 相关技术2 总体设计2.1 功能设计3 详细设计3.1 系统界面设计3.1.1 流程图3.1.2 界面截图3.2 程序描述3.2.1 选择地雷数量3.2.2 游戏界面4 课程设计总结4.1遇到问题解决问题过程4.2 系统存在的问题,进一步要做的工作

3、4.3 课程设计心得体会5 附录(程序代码)1.1 该设计的目的及意义1. 利 用 扫 雷 游 戏 巩 固 和 Java 语 言 程 序 设 计 这 一 课 程 的 基 本 知 识 的 理解 和 掌 握 ;2. 掌 握 Java 语 言 程 序 设 计 中 编 程 和 程 序 调 试 的 基 本 技 能 ;3. 基 本 掌 握 完 全 面 向 对 象 程 序 设 计 的 基 本 思 路 和 方 法 ;4. 利 用 Java 语 言 程 序 设 计 学 会 基 本 的 软 件 设 计 ;5. 掌 握 书 写 程 序 设 计 说 明 文 档 的 能 力 。1.2 课 程 设 计 要 求1. 分 析

4、 课 程 设 计 题 目 的 思 路 及 要 求 ;2. 编 写 程 序 代 码 , 调 试 程 序 使 其 能 正 确 运 行 ;3. 设 计 完 成 的 软 件 要 便 于 操 作 和 使 用 , 有 整 齐 、 美 观 的 使 用 界 面 ;4. 能 实 现 简 单 的 扫 雷 游 戏 ;1.3 相 关 技 术1. GUI 界 面 设 计 ;2. 窗 口 定 位 ;3. 绘 画 基 础 ;4. 事 件 监 听 ;5. 继 承 , 以 及 接 口 技 术 ;2.1 功能设计IndexPanel 类成员变量变量意义 变量类型 名称 long serialVersionUID 增加雷按钮值 b

5、oolean buAdd 减少雷按钮值 boolean buDec 玩游戏按钮值 boolean buPlay 成员方法方法名称 功能 备注 IndexPanel 初始化参数 构造方法 paint 绘出游戏界面 mousePressed 实现鼠标单击事件 接口方法 mouseReleased 实现鼠标释放事件 接口方法 该类实现游戏的开始界面,继承了 JPanel 同时实现了监听MouseListener (鼠标监听)事件。主要用于选定炸弹的数目,即游戏的难易程度,点击 play 按钮 则开始游戏。炸弹数量默认为 60。public void paint(Graphics g) 采用画笔的方式

6、设计界面,布局清晰,实现窗口的定位。例如:/ 画 设置炸弹数目的小球 (40)g.setColor(Color.white); / 画笔的颜色g.fillOval(40, 120, 30, 30); / 画的图形是 实心圆g.setColor(Color.gray); / 重新设置画笔的颜色g.drawOval(40, 120, 30, 30); / 画的图形是 空心圆g.drawString(40, 47, 142); /图形上面的字符串 / 画 PLAY 按钮g.setColor(Color.white); g.draw3DRect(30, 320, 120, 30, buPlay);g.

7、drawString(PLAY, 70, 340);public void mousePressed(MouseEvent e) ;鼠标点击事件,实现炸弹的选择。MyPanel 类成员变量变量意义 变量类型 名称 返回后重新开始 int replay 每插一旗变量加一 int win 判断是否赢 int gameWin long serialVersionUID 判断是否结束 int gameOver 是否有雷的标志 int bombFlag 方块周围雷数 int count 雷坐标 Int bomb_x,bomb_y 判断是否插旗 Int hadFlag 判断插旗是否正确 int check

8、 插旗错误点的坐标 int check_x,check_y 判断是否点击过 Int clicked 判断是否已经清除过 Int clearFlag 成员方法方法名称 功能 备注 MyPanel 初始 bombCount 变量 构造方法 paint 绘出雷区,初始化雷区,及定义雷区功能,包括插旗、判断输赢等 系统核心部分,使用了窗口定位,绘画等技术 mousePressed 实现鼠标点击事件,挖开方块 接口方法 clear 清除点击处周围安全非提示方块 keyPressed 实现键盘事件,插旗 接口方法 该 类 是 游 戏 界 面 , 也 是 最 核 心 的 类 。 不 仅 继 承 了 JPan

9、el 类 , 也 通过 鼠 标 和 键 盘 的 监 听 事 件 , 实 现 扫 雷 游 戏 。 之 前 选 择 的 炸 弹 随 机 分 布 在24*17 个 小 方 格 内 。插 旗 提 示 : 鼠标放在方格上,按空格键插旗。 public void paint(Graphics g) /采用画布的方式添加方格super.paint(g);if(replay = 1)for (int i = 0; i = 30 & e.getX() = 70& e.getY() = 100 & e.getX() = 70& e.getY() = 30 & e.getX() = 320& e.getY() =

10、30 & e.getX() = 70& e.getY() = 100 & e.getX() = 70& e.getY() = 40 & e.getX() = 120& e.getY() = 30 & e.getX() = 320& e.getY() 420 & e.getX() 380 & e.getY() 68 & e.getX() 390 & e.getY() = 0) & (j - 1 = 0)& (bombFlag(i - 1) * 17 + (j - 1) = 1) counti * 17 + j+;if (j - 1 = 0) & (bombFlagi * 17 + (j - 1)

11、 = 1) counti * 17 + j+;if (i + 1 = 0)& (bombFlag(i + 1) * 17 + (j - 1) = 1) counti * 17 + j+;if (i + 1 = 0) & (j + 1 = 0) & (bombFlag(i - 1) * 17 + j = 1) counti * 17 + j+;if (counti * 17 + j != 0 & bombFlagi * 17 + j != 1)g.drawString( + counti * 17 + j, 22 * i + 2,22 * j + 20);if (check = 0) g.set

12、Color(Color.blue);/ System.out.println(check_x*17+check_y);clickedcheck_x * 17 + check_y = 1;g.drawLine(check_x * 22 + 4, check_y * 22 + 4, check_x * 22 + 20,check_y * 22 + 20);g.drawLine(check_x * 22 + 20, check_y * 22 + 4, check_x * 22 + 4,check_y * 22 + 20);gameOver = 1;for(int i=0;i 420 & e.getX

13、() 380 & e.getY() 68 & e.getX() 390 & e.getY() = 0) & (j - 1 = 0) clicked(i - 1) * 17 + (j - 1) = 1;if (count(i - 1) * 17 + (j - 1) = 0& clearFlag(i - 1) * 17 + (j - 1) = 0) clear(i - 1, j - 1);if (j - 1 = 0) clickedi * 17 + (j - 1) = 1;if (counti * 17 + (j - 1) = 0& clearFlagi * 17 + (j - 1) = 0) c

14、lear(i, j - 1);if (i + 1 = 0) clicked(i + 1) * 17 + (j - 1) = 1;if (count(i + 1) * 17 + (j - 1) = 0& clearFlag(i + 1) * 17 + (j - 1) = 0) clear(i + 1, j - 1);if (i + 1 = 0) & (j + 1 = 0) clicked(i - 1) * 17 + j = 1;if (count(i - 1) * 17 + j = 0& clearFlag(i - 1) * 17 + j = 0) clear(i - 1, j);public

15、void keyPressed(KeyEvent e) replay = 0;if (gameOver = 0) if (e.getKeyCode() = 32) Point point = MouseInfo.getPointerInfo().getLocation();int location_x = point.x-300;int location_y = point.y-100;check = 0; / 判断插旗是否正确for (int i = 0; i = location_x - 8)& (bomb_yi * 22 = location_y - 32) if(hadFlagi = 0)hadFlagi = 1;win +;clickedbomb_xi * 17 + bomb_yi = 1;check = 1; / 正确插旗elsewin-;hadFlag

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号