当前位置:文档之家› 扫雷游戏-课程设计报告

扫雷游戏-课程设计报告

J A V A课程设计题目:扫雷游戏院(系)计算机信息工程学院专业网络工程班级 13级网络工程1班学生姓名方琴刘莉虹程子卿薛中意设计时间 2015年8月指导教师万中英提交日期 2015年10月8日摘要《扫雷》是一款大众类的益智小游戏。

游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷。

先任意点开少量的方格,没有爆炸时,会出现一个数字,这个数字代表的意思是以它为中心的9个格子内所有雷的个数。

一般围在一堆数字中间的有可能是雷,你在你认为是雷的那里插旗,就可以把它设定为雷,然后在数字区用鼠标左右键双击,可以打开非雷区,等打开所有非雷区,你就赢了。

采用GUI界面设计,窗口定位,绘图机制,鼠标监听等Java技术。

用户可以自己选择地雷的数量,地雷随机分布在17*24的方块矩阵中,地雷数量越多,难度越大。

鼠标放在方格上,单击鼠标左键开始游戏,按空格键插旗。

如果插旗错误,或是点击到了地雷,则游戏失败。

1 引言该设计的目的及意义该设计的要求相关技术2 总体设计功能设计3 详细设计系统界面设计流程图界面截图程序描述选择地雷数量游戏界面4 课程设计总结遇到问题解决问题过程系统存在的问题,进一步要做的工作课程设计心得体会5 附录(程序代码)该设计的目的及意义1.利用扫雷游戏巩固和Java语言程序设计这一课程的基本知识的理解和掌握;2.掌握Java语言程序设计中编程和程序调试的基本技能;3.基本掌握完全面向对象程序设计的基本思路和方法;4.利用Java语言程序设计学会基本的软件设计;5.掌握书写程序设计说明文档的能力。

课程设计要求1. 分析课程设计题目的思路及要求;2. 编写程序代码,调试程序使其能正确运行;3. 设计完成的软件要便于操作和使用,有整齐、美观的使用界面;4. 能实现简单的扫雷游戏;相关技术1.GUI界面设计;2.窗口定位;3.绘画基础;4.事件监听;5.继承,以及接口技术;功能设计IndexPanel类成员变量变量意义变量类型名称long serialVersionUID 增加雷按钮值boolean buAdd减少雷按钮值boolean buDec玩游戏按钮值boolean buPlay成员方法方法名称功能备注IndexPanel 初始化参数构造方法paint 绘出游戏界面mousePressed 实现鼠标单击事件接口方法mouseReleased 实现鼠标释放事件接口方法该类实现游戏的开始界面,继承了JPanel 同时实现了监听MouseListener (鼠标监听)事件。

主要用于选定炸弹的数目,即游戏的难易程度,点击 play按钮则开始游戏。

炸弹数量默认为60。

public void paint(Graphics g){}采用画笔的方式设计界面,布局清晰,实现窗口的定位。

例如:public class Index {static IndexPanel panel1;static MyPanel panel2;. . .}该类是游戏的主类,引用了静态的IndexPanel 类以及 MyPanel 类。

主要决定页面设计,窗口大小,以及添加事件。

流程图界面截图运行程序选择炸弹数量点击 play按钮开始游戏点到雷,则游戏失败否则成功选择地雷数量炸弹数量越多,难度越大。

public void mouseReleased(MouseEvent e) { if () >= 30 && () <= 80 && () >= 70&& () <= 100) {buAdd = true; ++;}if () >= 100 && () <= 150 && () >= 70&& () <= 100) {buDec = true; ;}if () >= 30 && () <= 150 && () >= 320&& () <= 350) {buPlay = true; (false);}repaint();}public void mousePressed (MouseEvent e) { if () >= 30 && () <= 80 && () >= 70&& () <= 100) {buAdd = false;}if () >= 100 && () <= 150 && () >= 70 && () <= 100) {buDec = false;}if () >= 40 && () <= 70 && () >= 120 && () <= 150) {= 40;}if () >= 30 && () <= 150 && () >= 320 && () <= 350) {buPlay = false;}repaint();}游戏界面点击游戏主面板的任一方格public void mousePressed(MouseEvent e) {replay = 0;if(() > 420 && () < 480 && () > 380 && () < 405)){ "fahui");check = 1;replay = 1;win = 0;gameOver = 0;gameWin = 0;bombCount = 60;repaint();(false);}else{if (()<375)&&gameOver == 0 && gameWin == 0) {int mouse_i = () / 22;int mouse_j = () / 22;clicked[mouse_i * 17 + mouse_j] = 1;for (int i = 0; i < bombCount; i++) {if((mouse_i == bomb_x[i]) && (mouse_j == bomb_y[i])) {gameOver = 1;break;}}if((count[mouse_i * 17 + mouse_j] == 0) && (gameOver== 0)) {clear(mouse_i, mouse_j);repaint();}else{if((gameOver == 1 || gameWin == 1)&&() > 68 && () < 128 && () > 390 && () < 420)){"fahui");check = 1;replay = 1;win = 0;gameOver = 0;gameWin = 0;bombCount = 60;repaint();(false);}}}遇到问题解决问题过程A. 没有返回键相互讨论,添加replay按钮,点击后所有数据初始化,重新开始回到选择界面。

B. 插旗相关函数查阅相关资料,讨论,最终设定鼠标放在方格上,按空格键插旗。

系统存在的问题,进一步要做的工作没有用文本或者是其他方式保存数据,每次用户结束游戏之后,数据没有保存。

因此没办法实现排行榜等数据比较功能。

课程设计心得体会Java程序语言设计一种可以撰写跨平台应用软件的面向对象的程序设计语言。

在这次的课程设计中不仅检验了我们所学习的知识,也学会了完成一件事情的方法和技巧。

在设计过程中,和同学们相互探讨,相互学习,相互监督。

学会了宽容,学会了理解,课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作、一个必不少的过程.通过这次课程设计,明白除了日常的理论学习,还要多实践,把所学的知识运用在真正的实践上。

而完成课程设计,不仅是对我们学习情况的检验,也是对自己的一次考验。

5 附录(程序代码)package saolei;import class Index {static IndexPanel panel1;static MyPanel panel2;public static void main(String[] args) { JFrame frame = new JFrame();(546, 415 + 50);(300,100);panel1 = new IndexPanel();panel2 = new MyPanel();(panel1); etLocation();int location_x = ;int location_y = ;check = 0; etImage();Image hudie = new ImageIcon("Image/").getImage();(top, 380, 320, 80, 80, null);(hudie, 300, 80, 150, 120, null);(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 () >= 30 && () <= 80 && () >= 70 && () <= 100) {buAdd = false;}if () >= 100 && () <= 150 && () >= 70 && () <= 100) {buDec = false;}if () >= 40 && () <= 70 && () >= 120 && () <= 150) {= 40;}if () >= 110 && () <= 140 && () >= 120 && () <= 150) {= 60;}if () >= 40 && () <= 70 && () >= 170 && () <= 200) {= 65;}if () >= 110 && () <= 140 && () >= 170 && () <= 200) {= 70;}if () >= 40 && () <= 70 && () >= 220 && () <= 250) {= 75;}if () >= 110 && () <= 140 && () >= 220&& () <= 250) {= 80;}if () >= 40 && () <= 70 && () >= 270 && () <= 300) {= 85;}if () >= 110 && () <= 140 && () >= 270 && () <= 300) {= 90;}if () >= 30 && () <= 150 && () >= 320 && () <= 350) {buPlay = false;}repaint();}public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stubif () >= 30 && () <= 80 && () >= 70&& () <= 100) {buAdd = true;++;}if () >= 100 && () <= 150 && () >= 70 && () <= 100) {buDec = true;;}if () >= 30 && () <= 150 && () >= 320&& () <= 350) {buPlay = true;(false);}repaint();}}。

相关主题