77范文网 - 专业文章范例文档资料分享平台

java课程设计 SWT 扫雷(功能图,类图,类详细说明,测试)(4)

来源:网络收集 时间:2018-12-03 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

图2-9 mineborder详细类图

(1) 成员变量

Button_Game是Button[][]型,用于创建扫雷区

Map_Bomb是Int[][]型,用于创建扫雷区的地雷分布图

Bomb_I和Bomb_J是Int型,Bomb_I为地雷区有多少行,Bome_J为地雷区有多少列。

mines,Tag_Num,CountTime都是int型,mines用来定义雷数,Tag_Num用来定义flag可用数目,CountTime用来计时

timer是Timer类型,用来定义计时器。

Success是boolean类型,默认为true,用来辅助判断玩家是否获胜的条件,一旦玩家中途失败,则设置为false

(2) 方法

mineborder(Composite, int, int, int, int)是该类的构造函数,带入的Composite是父容器,此处为父Shell,后面的int依次为样式,行数,列数,雷数 reset()用于重新开始游戏。

12

3编码实现

3.1 minesweeper.action包 (1) ImageSource类

package minesweeper.action;

import org.eclipse.swt.graphics.*; import org.eclipse.swt.widgets.*; //该类用于初始化各Image,便于图片更改 public class ImageSource {

private Display d;

public Image[] image=new Image[9]; public ImageSource(Display display){

//构造函数,用于初始化0-8,这九

个图片的image

}

//定义各种image,便于其他类调用

public Image mine=new Image(d,\); public Image explosion=new

this.d=display; for(int i=0;i<9;i++)

image[i]=new Image(d,\+i+\);

Image(d,\);

public Image flag=new Image(d,\); public Image wrong=new Image(d,\); public Image digbome=new

Image(d,\);

public Image xiaolian=new

Image(d,\);

public Image app=new Image(d,\); public Image background=new

Image(d,\); }

(2) MouseLeftListener类

package minesweeper.action;

13

import java.io.IOException; import java.util.TimerTask; import minesweeper.swt.*; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.*; import org.eclipse.swt.events.*;

//创建左键点击触发的MouseAdapter

public class MouseLeftListener extends MouseAdapter{

private Button [][]Button_Game; private int[][]Map_Bomb; private int Bomb_I,Bomb_J;

private ImageSource imagesource=new ImageSource(mainshell.d);

//构造函数,用于初始化参数,便于后续进行操作

public MouseLeftListener(Button[][]Button_Game,int[][]Map_Bomb,int

Bomb_I,int Bomb_J){

}

//sweep函数,传入(x,y)坐标,翻开该坐标button的内容 public void sweep(int X,int Y){

if(Button_Game[X][Y].getImage()==null){

if(Map_Bomb[X][Y]==9){

//

this.Button_Game=Button_Game; this.Map_Bomb=Map_Bomb; this.Bomb_I=Bomb_I; this.Bomb_J=Bomb_J;

如果选择的是雷

Button_Game[X][Y].setImage(imagesource.mine);

//

设置为雷的图片

} else{

Button_Game[X][Y].setImage(imagesource.image[Map_Bomb[X][Y]]);

//设置成相应数字的图片

}

14

if(Map_Bomb[X][Y]==0) 周围所有 { if(Y-1>=0) {

sweep(X,Y-1);

sweep函数扫雷 if(X+1

sweep(X+1,Y-1);

调用sweep函数扫雷 if(X-1>0)

sweep(X-1,Y-1);

调用sweep函数扫雷 }

if(X-1>=0)

sweep(X-1,Y);

sweep函数扫雷 if(X+1

sweep(X+1,Y);

sweep函数扫雷 if(Y+1

sweep(X,Y+1);

sweep函数扫雷 if(X+1

sweep(X+1,Y+1);

调用sweep函数扫雷 if(X-1>=0)

sweep(X-1,Y+1);

调用sweep函数扫雷 }

}

}

}

15

//如果该格子周围什么都没有,挖开

//如果该雷的左边存在,那么对他调用

//如果该雷的左下方存在,那么对他

//如果该雷的左上方存在,那么对他

//如果该雷的上方存在,那么对他调用

//如果该雷的下方存在,那么对他调用

//如果该雷的右边存在,那么对他调用

//如果该雷的右下方存在,那么对他

//如果该雷的右上方存在,那么对他

//创建鼠标左键点击事件函数

public void mouseUp(MouseEvent e) {

if(e.button==1){

//判断是否是鼠标左键点击

//获取该点击区域的对象

Object Button_Select=e.getSource();

if(minesweeper.swt.fuzhumianbanComposite.FirstClickFlag){ //如果是第一次点击,启动时钟

minesweeper.swt.fuzhumianbanComposite.FirstClickFlag=false; TimerTask task=new

CountT(minesweeper.swt.fuzhumianbanComposite.l2);

}

for(int i=0;i

for(int j=0;j

if((Button_Select==Button_Game[i][j])){

//2层for循环

minesweeper.swt.mineborder.timer.schedule(task, 0,1000);

查找选择的按钮的i,j坐标

sweep(i,j);

//翻开该坐标

button的内容

//如果点到雷了,弹出diag,你输了,显示全部button内容,方便玩家找

出自己错误,并设置mineborder.success=false;

if(Map_Bomb[i][j]==9&&(!Button_Game[i][j].getText().equals(new

mineborder.success=false;

String(\)))){

Button_Game[i][j].setImage(imagesource.digbome); //

该点错的位置设置为引爆地雷的骷髅图标

minesweeper.swt.mineborder.timer.cancel();

//停止计时

System.out.println(\你失败成绩:

\+minesweeper.swt.mineborder.CountTime);

//弹出diag对话框

MessageBox failgame=new

MessageBox(Button_Game[i][j].getParent().getShell(),SWT.ICON_QUESTION|SWT.YES);

failgame.setMessage(\你输了\);

16

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java课程设计 SWT 扫雷(功能图,类图,类详细说明,测试)(4)在线全文阅读。

java课程设计 SWT 扫雷(功能图,类图,类详细说明,测试)(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/333983.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: