广西师范大学漓江学院理学系
JAVA程序设计》课程设计报告
               
设计题目: 基于JAVA扫雷游戏的设计   
 
    :                                
    员:                               
                                                       
                                                       
指导教师:      陈意山讲师               
设计时间:   20111225       
评阅意见:
指导老师签名:         
       
设计报告成绩
java程序设计主要内容
50分)
演示答辩成绩
30分)
过程考核成绩
20分)
总分

基于JAVA扫雷游戏的设计
开发背景及意义
    扫雷游戏是Windows系统自带的一个益智类的小游戏,它通过点击方格并以出现的数字来判断附近地雷的数量,将全部地雷做上标记即可胜利。经过这么多年,Windows操作系统也经过了多次的更新换代,很多的功能得到了完善 系统也越来越精致复杂。但是操作系统自带的这款扫雷小游戏还是维持着原来的样子和功能,并没有因为时间的推移而被遗忘。这说明了扫雷游戏得到了很多人的喜爱和支持,才能一直存在到现在。
扫雷游戏是一个益智类的小游戏,通过这个游戏我们可以提高鼠标的操作能力,还可以锻炼我们的思维能力,是一个很好的小游戏。大学里我们学到了很多相关的理论知识,但是光有理论知识是不够的,最重要的还是要有实践的能力,所以本课程设计我选择了扫雷游戏的开发与设计这个项目。此游戏的功能类似于Windows系统自带的扫雷游戏,而且在自定义雷区模块用户可以选择级别,从而提高了游戏的趣味性。
需求分析
扫雷游戏的用户很广泛,老少皆宜。当他们在繁忙的工作学习后,可以通过这个小游戏放松心情来调节一下氛围。因此本系统的设计简单容易操作,更能吸引广大用户的注意。
扫雷游戏有三个级别难度,随着级别的增高,地雷数目就越多。当游戏初始化时,系统就随机布置地雷;用户开始游戏时,计时器开始计时;游戏胜利或者失败后,弹出提示对话框,计时器停止计时;在自定义模块里,用户可以选择游戏的级别,然后设置地雷的数目。
3 总体设计
    3.1 类关系图
在本系统中共使用到7Java源文件,其关系如下:
文件
内容
备注
AboutFrame.java
程序“关于”对话框。
JCounter.java
计数器类。
JMine.java
主程序类
JMineArth.java
地雷分布图算法类
JMineButton.java
Jbutton的扩展类有行号、列号、标记标志和单击标志
StartJMine.java
程序入口点
WinFrame.java
胜利对话框,有易中难三个启动选项
StartJMine.bat
运行程序的批处理文件
3.2 程序界面
程序界面
胜利对话框
3.3 程序基本流程图
    3.4 JMine类是本程序的基础类。它实现的左右有:打开难度设置窗口类、About窗口类、初始化地图、运行JMineArth类以按照设定单独进行地雷埋设、自动检测挖雷、判定胜利等等。
3.5 JMineArth主类其中一个最重要的作用,是负责在雷区中(10*10)矩阵中埋设地雷,通过难度设置中确定的地雷个数进行循环,每循环设置一个雷,将通过获取两个随机数以确定矩阵的行和列。
    3.6 JCounter类是进行地雷个数的计算,方便用户使用时了解雷区地雷个数,以及已标记的地雷个数。
    3.7 JMinebutton类是程序窗口雷区的按钮,用于表示该地点的各种状态:未标记雷、标记有雷、显示类、显示该区域周围雷的个数等。
    3.8 WinFrame类设定有3个难易级别,三个难易级别依次是122436个雷。
   
    4 编码和实现
    4.1 扫雷难易级别设置(WinFrame类)
    private int level;            //难度级别
    public int getMineNum() {   
        return(level*12);        //设置地雷个数分别为1*122*123*12
    }
    public void mouseClicked(MouseEvent e) {
        //System.out.println("Jerry Click");
        Source() == easy) {
            level = 1;        //easy级别
        }
        Source() == middle) {
            level = 2;        //middle级别
        }
        Source() == hard) {
            level = 3;        //hard级别
        }
        isOk = true;   
    }
    4.2 埋设地雷(JMineArth类)
    负责在雷区中(10*10)矩阵中埋设地雷,通过难度设置中确定的地雷个数进行循环,每循环设置一个雷,将通过获取两个随机数以确定矩阵的行和列。
    public int [][] mine;        //雷区矩阵
    private void setMine(int mineNum, int Outrow, int Outcol) {
        int col=0, row = 0, i=0;
        //Math.srand(now);
        while (i < mineNum) {        //循环
            col = (int)(Math.random()*100)%10;        //0-9之间的随机数为行号
            row = (int)(Math.random()*100)%10;  //0-9之间的随机数为列号
            if (mine[col][row]==0 && (row!=Outrow || col!=Outcol || Outrow==10 )) {
                mine[row][col]=9;        //如果未埋雷,则设定此位置有雷。
                i++;
            }
        }
    }
    4.3 挖雷(JMine类)
    即用户点击雷区按钮,如果有雷即触雷;否则进行递归嵌套循环操作,以读取此处周围的地雷数量,或者自动挖雷。
    void checkMine(int row, int col) {
        if (mine.mine[i][j] == 9) {    //判断此处是否有雷
            bomb(i,j);            //触雷,程序结束,打开触雷程序。
        }
        else if (mine.mine[i][j] == 0 && mineButton[i][j].getClickFlag() == false) {

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。