收藏 分享(赏)

扫雷游戏-课程设计报告.doc

上传人:cjc2202537 文档编号:4916900 上传时间:2019-01-22 格式:DOC 页数:28 大小:416.34KB
下载 相关 举报
扫雷游戏-课程设计报告.doc_第1页
第1页 / 共28页
扫雷游戏-课程设计报告.doc_第2页
第2页 / 共28页
扫雷游戏-课程设计报告.doc_第3页
第3页 / 共28页
扫雷游戏-课程设计报告.doc_第4页
第4页 / 共28页
扫雷游戏-课程设计报告.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

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 ch

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

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

10、olor(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 if (count

11、(i - 1) * 17 + (j - 1) = 0if (j - 1 = 0) clickedi * 17 + (j - 1) = 1;if (counti * 17 + (j - 1) = 0if (i + 1 = 0) clicked(i + 1) * 17 + (j - 1) = 1;if (count(i + 1) * 17 + (j - 1) = 0if (i + 1 = 0) if (count(i - 1) * 17 + j = 0public void keyPressed(KeyEvent e) replay = 0;if (gameOver = 0) if (e.getK

12、eyCode() = 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)win +;clickedbomb_xi * 17 + bomb_yi = 1;check = 1; / 正确插旗elsewin-;hadFlagi = 0;clickedbomb_xi * 17 + bomb_yi = 0;che

13、ck = 1; / 正确插旗if(win = bombCount)gameWin = 1;if (check = 0) check_x = (location_x - 8) / 22;check_y = (location_y - 32) / 22;repaint();public void keyReleased(KeyEvent arg0) public void keyTyped(KeyEvent arg0) IndexPanel.javapackage saolei;import java.awt.BasicStroke;import java.awt.Color;import jav

14、a.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.ImageIcon;import javax.swing.JPanel;public class IndexPanel extends JPanel implements MouseListener private static final long s

15、erialVersionUID = 1L;boolean buAdd = true; / 增加按钮,按下该值就为 falseboolean buDec = true; / 减少按钮,按下该值就为 falseboolean buPlay = true; / 玩游戏按钮,按下该值就为 falsepublic IndexPanel() this.setBackground(new Color(150, 230, 250); / 设置背景颜色public void paint(Graphics g) super.paint(g);Graphics2D g2D = (Graphics2D) g;g2D.

16、setStroke(new BasicStroke(3f);/ 显示炸弹数目g.setFont(new Font(“, Font.BOLD, 25);g.setColor(Color.white);g.drawString(“炸弹数量:“ + MyPanel.bombCount, 20, 50);g.setFont(new Font(“, Font.BOLD, 15);/ 画增加按钮g.draw3DRect(30, 70, 50, 30, buAdd);g.drawString(“增加“, 40, 92);/ 画减少按钮g.draw3DRect(100, 70, 50, 30, buDec);

17、g.drawString(“减少“, 110, 92);/ 画设置炸弹数目的小球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);g.setColor(Color.white);g.fillOval(110, 120, 30, 30);g.setColor(Color.gray);g.drawOval(110, 120, 30, 30);g.drawString(“60“, 117,

18、142);g.setColor(Color.white);g.fillOval(40, 170, 30, 30);g.setColor(Color.gray);g.drawOval(40, 170, 30, 30);g.drawString(“65“, 47, 192);g.setColor(Color.white);g.fillOval(110, 170, 30, 30);g.setColor(Color.gray);g.drawOval(110, 170, 30, 30);g.drawString(“70“, 117, 192);g.setColor(Color.white);g.fill

19、Oval(40, 220, 30, 30);g.setColor(Color.gray);g.drawOval(40, 220, 30, 30);g.drawString(“75“, 47, 242);g.setColor(Color.white);g.fillOval(110, 220, 30, 30);g.setColor(Color.gray);g.drawOval(110, 220, 30, 30);g.drawString(“80“, 117, 242);g.setColor(Color.white);g.fillOval(40, 270, 30, 30);g.setColor(Co

20、lor.gray);g.drawOval(40, 270, 30, 30);g.drawString(“85“, 47, 292);g.setColor(Color.white);g.fillOval(110, 270, 30, 30);g.setColor(Color.gray);g.drawOval(110, 270, 30, 30);g.drawString(“90“, 117, 292);/ 画 PLAY 按钮g.setColor(Color.white);g.draw3DRect(30, 320, 120, 30, buPlay);g.drawString(“PLAY“, 70, 3

21、40);ImageIcon icon = new ImageIcon(“Image/rightImage.png“);Image rightImage = icon.getImage();Image top = new ImageIcon(“Image/top.png“).getImage();Image hudie = new ImageIcon(“Image/hudie.png“).getImage();g.drawImage(top, 380, 320, 80, 80, null);g.drawImage(hudie, 300, 80, 150, 120, null);g.drawImage(rightImage, 250, 50, 200, 300, null);public void mouseClicked(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mousePressed(MouseEvent e) if (e.getX() = 30 this.setVisible(false);Index.panel2.setVisible(true);repaint();

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 工作总结

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报