Java扫雷游戏课程设计实训报告.docx
- 文档编号:30625
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:21
- 大小:72.20KB
Java扫雷游戏课程设计实训报告.docx
《Java扫雷游戏课程设计实训报告.docx》由会员分享,可在线阅读,更多相关《Java扫雷游戏课程设计实训报告.docx(21页珍藏版)》请在冰豆网上搜索。
Java扫雷游戏课程设计实训报告
一.总体设计
本系统共包括3个java源文件和4个图像文件。
1.类之间的关系如图1.1所示。
2.java源文件及其功能如表1所示。
表1源文件及其功能
序号
文件名
主要功能
1
Main.java
生成的类负责创建程序窗口,含有main方法,游戏从该类开始执行。
2
MainBomb.java
为主类创建整个挖雷游戏的对象,包括窗口,布雷,判断等等。
3
Bomb.java
负责创建游戏所需要的按钮。
3.图像文件
Bomb.gif:
地雷方块上的图标。
question.gif:
疑惑探雷是否正确。
bomb_big.gif:
触雷时方块上的图标。
flag.gif:
探雷标记。
二、详细设计
1.主类Main
(1)成员变量(见表2)
表2
成员变量描述
变量类型
备注
游戏运行
MainBomb
临时变量
(2)成员变量(见表3)
表3
名称
功能
备注
main
游戏开始
(3)源代码见文件Main.java
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
/*主类*/
publicclassMain
{
publicstaticvoidmain(Stringargs[])
{
(newMainBomb()).show();
}
}
2.挖雷游戏MainBomb
(1)成员变量(见表4)
表4
成员变量描述
变量类型
名称
雷数设置
JTextField
text
当前方块数
int
BlockNum
当前雷数
int
BombNum
开始
JButton
start
踩雷
Icon
icon_bomb
踩雷标记
Icon
icon_bomb_big
雷标记
Icon
icon_flag
疑惑是否有雷
Icon
icon_question
目录面板
Panel
MenuPamel
主面板
Panel
mainPanel
雷
Bomb[][]
bombButton
该方块是否有雷
boolean
周围无雷
方块周围的雷数
int
周围的雷数
方块上的雷标记
int
探雷标记
显示方块信息
JLabel
Label
方块在雷区的位置
Point
P
布雷
RandomSet
set
判断标记是否正确
Determine
Determine
是否获得胜利
Winner
Win
雷标数目
int
count
周围方块的雷数
int
count1
(2)方法见(表5)
表5
方法名
功能
备注
Game
创建程序窗口
bar
newGame
新开局
actionPerformed
处理ActionEvent事件
接口方法
设置方块是否有雷
设置雷的值
设置是雷时的图标
设置label上的图标
设置无雷时的图标
设置label上的图标
设置有雷时的名字
设置label上的文字
设置周围的雷数
设置周围的雷数
获取名字
返回方块label上的文字
获取周围雷数
返回周围的雷数
设置雷区位置
设置属性P
获取雷区位置
返回属性P
获取探雷标记
返回探雷标记
mousePressed
处理鼠标按下事件
接口方法
mouseClicked
处理鼠标双击事件
接口方法
mouseReleased
处理鼠标释放事件
接口方法
mouseExited
处理鼠标退出事件
接口方法
mouseEntered
处理鼠标进入事件
接口方法
MinesSquare
创建雷区
gameOver
游戏失败
判断雷标是否正确
正确返回true错误返回false
布雷
随机布雷
判断是否成功
成功返回true失败返回false
(3)源代码见文件MainBomb.java
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
/*窗口及算法实现类*/
classMainBombextendsJFrameimplementsActionListener,MouseListener
{
publicJTextFieldtext;
publicLabelnowBomb,setBomb;
publicintBlockNum,BombNum;
//当前方块数当前雷数
publicIconicon_bomb=newImageIcon("Bomb.gif");
//踩雷
publicIconicon_bomb_big=newImageIcon("bomb_big.gif");
//踩雷标记
publicIconicon_flag=newImageIcon("flag.gif");
//雷标记
publicIconicon_question=newImageIcon("question.gif");
//疑惑是否有雷
publicJButtonstart=newJButton("开始");
publicPanelMenuPamel=newPanel();
publicPanelmainPanel=newPanel();
publicBomb[][]bombButton;
/*界面设计*/
publicMainBomb()
{
super("成型04-2李超JAVA课程设计");
BlockNum=64;
BombNum=10;
Containerc=getContentPane();
c.setBackground(Color.gray);
c.setLayout(newBorderLayout());
text=newJTextField("10",3);
nowBomb=newLabel("当前雷数"+""+BombNum+"");
setBomb=newLabel("设置地雷数");
start.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
BombNum=Integer.parseInt(text.getText().trim());
if(BombNum>=10&&BombNum<50)
replay();
else
{
JOptionPanemsg=newJOptionPane();
JOptionPane.showMessageDialog(null,"您设置的地雷数太多了,请重设!
","错误",2);
}
}
});
MenuPamel.add(setBomb);
MenuPamel.add(text);
MenuPamel.add(start);
MenuPamel.add(nowBomb);
c.add(MenuPamel,"North");
mainPanel.setLayout(newGridLayout((int)Math.sqrt(BlockNum),(int)Math.sqrt(BlockNum)));
bombButton=newBomb[(int)Math.sqrt(BlockNum)][];
for(inti=0;i<(int)Math.sqrt(BlockNum);i++)
{
bombButton[i]=newBomb[(int)Math.sqrt(BlockNum)];
}
for(inti=0;i<(int)Math.sqrt(BlockNum);i++)
for(intj=0;j<(int)Math.sqrt(BlockNum);j++)
{
bombButton[i][j]=newBomb(i,j);
bombButton[i][j].setForeground(Color.gray);
bombButton[i][j].addActionListener(this);
bombButton[i][j].addMouseListener(this);
}
for(inti=0;i<(int)Math.sqrt(BlockNum);i++)
for(intj=0;j<(int)Math.sqrt(BlockNum);j++)
mainPanel.add(bombButton[i][j]);
c.add(mainPanel,"Center");
startBomb();
setSize(400,400);
setLocation(350,200);
setResizable(false);
}
/*布雷*/
publicvoidstartBomb()
{
for(inti=0;i { intx=(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1)); inty=(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1)); if(bombButton[x][y].isBomb==true) i--; else bombButton[x][y].isBomb=true; } } /*重新开始*/ publicvoidreplay() { nowBomb.setText("当前雷数"+""+BombNum+""); for(inti=0;i<(int)Math.sqrt(BlockNum);i++) for(intj=0;j<(int)Math.sqrt(BlockNum);j++) { bombButton[i][j].isBomb=false; bombButton[i][j].isClicked=false; bombButton[i][j].setEnabled(true); bombButton[i][j].setText(""); bombButton[i][j].setIcon(null); } startBomb(); } /*是否挖完了所有的雷*/ publicvoidisWin() { intfindBomb=0;//找到的地雷数 for(inti=0;i<(int)Math.sqr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 扫雷 游戏 课程设计 报告