实训报告书Word文件下载.docx

上传人:b****5 文档编号:15943615 上传时间:2022-11-17 格式:DOCX 页数:13 大小:143.97KB
下载 相关 举报
实训报告书Word文件下载.docx_第1页
第1页 / 共13页
实训报告书Word文件下载.docx_第2页
第2页 / 共13页
实训报告书Word文件下载.docx_第3页
第3页 / 共13页
实训报告书Word文件下载.docx_第4页
第4页 / 共13页
实训报告书Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

实训报告书Word文件下载.docx

《实训报告书Word文件下载.docx》由会员分享,可在线阅读,更多相关《实训报告书Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

实训报告书Word文件下载.docx

实训日期

2015.12.6至2015.12.11

实训成绩

指导教师评语

指导教师签名:

______________

_______年____月____日

……………………………装……………………………………订…………………………………线……………………………

目录

1实训目的1

2扫雷游戏系统的分析与设计1

2.1系统功能描述1

2.2系统模块设计1

3主要代码清单3

4程序运行与测试11

5实训总结13

扫雷游戏系统的设计与实现

1实训目的

随着社会的不断进步,人们所承受的压力不断上升,在游戏层出不穷的时刻,扫雷游戏仍受到不少人的青睐,其本身的性质,决定了人们对它的喜爱程度,不需要特殊的技巧,不需要不断地升级,不需要太多的时间进行初步的熟悉,简简单单却乐趣无穷。

2扫雷游戏系统的分析与设计

2.1系统功能描述

(1)该游戏具有计时功能,即扫完全部地雷所花费的时间。

(2)用户可以选择是否有音效。

(3)用户可以自定义级别,还可以输入任意地雷数。

(4)自动保存扫雷排行榜。

2.2系统模块设计

系统的整体布局为:

CardLayout布局,采用菜单、按钮、面板„„等组件,菜单项主要有开始,选择级别,自定义,标记,声音,扫雷排行榜,退出,按钮的功能是重新开始游戏(可以选择游戏菜单里的开局,也可以点击企鹅图标重新开始游戏)。

2.3数据库结构设计

系统结构图

系统流程图

3主要代码清单

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassFrame

extendsJFrame{

JTextFieldtext;

JLabelnowBomb,setBomb;

intBombNum,BlockNum;

//当前雷数,当前方块数

intrightBomb,restBomb,restBlock;

//找到的地雷数,剩余雷数,剩余方块

JButtonstart=newJButton("

开始"

);

JPanelMenuPamel=newJPanel();

JPanelbombPanel=newJPanel();

Bomb[][]bombButton;

JPanelc;

BorderLayoutborderLayout1=newBorderLayout();

GridLayoutgridLayout1=newGridLayout();

publicFrame(){

try{

setDefaultCloseOperation(EXIT_ON_CLOSE);

jbInit();

}

catch(Exceptionexception){

exception.printStackTrace();

}}

privatevoidjbInit()throwsException{

c=(JPanel)getContentPane();

setTitle("

扫雷"

c.setBackground(Color.WHITE);

MenuPamel.setBackground(Color.GRAY);

c.setLayout(borderLayout1);

setSize(newDimension(600,600));

setResizable(false);

BlockNum=144;

BombNum=10;

text=newJTextField("

10"

3);

nowBomb=newJLabel("

当前雷数"

+"

:

"

+BombNum);

setBomb=newJLabel("

设置地雷数"

start.addActionListener(newFrame1_start_actionAdapter(this));

MenuPamel.add(setBomb);

MenuPamel.add(text);

MenuPamel.add(start);

MenuPamel.add(nowBomb);

c.add(MenuPamel,java.awt.BorderLayout.SOUTH);

bombPanel.setLayout(gridLayout1);

gridLayout1.setColumns((int)Math.sqrt(BlockNum));

gridLayout1.setRows((int)Math.sqrt(BlockNum));

bombButton=newBomb[(int)Math.sqrt(BlockNum)][(int)Math.sqrt(BlockNum)];

for(inti=0;

i<

(int)Math.sqrt(BlockNum);

i++){

for(intj=0;

j<

j++){

bombButton[i][j]=newBomb(i,j);

//bombButton[i][j].setSize(10,10);

bombButton[i][j].setFont(newFont("

Font.PLAIN,14));

//设置字体

bombButton[i][j].setForeground(Color.white);

bombButton[i][j].addMouseListener(newBomb_mouseAdapter(this));

bombButton[i][j].addActionListener(newBomb_actionAdapter(this));

bombPanel.add(bombButton[i][j]);

c.add(bombPanel,java.awt.BorderLayout.CENTER);

startBomb();

}/*开始按钮*/

publicvoidstart_actionPerformed(ActionEvente){

intnum=Integer.parseInt(text.getText().trim());

if(num>

=5&

&

num<

50){

BombNum=num;

elseif(num<

5){

JOptionPane.showMessageDialog(null,"

您设置的地雷数太少了,请重设!

"

错误"

JOptionPane.ERROR_MESSAGE);

num=10;

else{

您设置的地雷数太多了,请重设!

BombNum=num;

}}/*开始,布雷*/

publicvoidstartBomb(){

nowBomb.setText("

bombButton[i][j].isBomb=false;

bombButton[i][j].isClicked=false;

bombButton[i][j].isRight=false;

bombButton[i][j].BombFlag=0;

bombButton[i][j].BombRoundCount=9;

bombButton[i][j].setEnabled(true);

bombButton[i][j].setText("

//设置字体bombButton[i][j].setForeground(Color.BLUE);

rightBomb=0;

restBomb=BombNum;

restBlock=BlockNum-BombNum;

BombNum;

){

intx=(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1));

inty=(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1));

if(bombButton[x][y].isBomb!

=true){

bombButton[x][y].isBomb=true;

i++;

}

CountRoundBomb();

}/*计算方块周围雷数*

publicvoidCountRoundBomb(){

intcount=0;

//当需要检测的单元格本身无地雷的情况下,统计周围的地雷个数

if(bombButton[i][j].isBomb!

for(intx=i-1;

x<

i+2;

x++){

for(inty=j-1;

y<

j+2;

y++){

if((x>

=0)&

(y>

=0)

&

(x<

((int)Math.sqrt(BlockNum)))

(y<

((int)Math.sqrt(BlockNum)))){

if(bombButton[x][y].isBomb==true){

count}

bombButton[i][j].BombRoundCount=co}}

/*是否挖完了所有的雷*/

publicvoidisWin(){

if(bombButton[i][j].isClicked==true){

restBlock--;

}}

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

当前位置:首页 > 工作范文 > 制度规范

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1