java扫雷代码问题分析,Java扫雷毕业论文

Java扫雷程序左右键同时按下的问题

改成

站在用户的角度思考问题,与客户深入沟通,找到华亭网站设计与华亭网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、成都网站设计、企业官网、英文网站、手机端网站、网站推广、域名申请虚拟主机、企业邮箱。业务覆盖华亭地区。

int onmask = e.BUTTON1_DOWN_MASK | e.BUTTON3_DOWN_MASK;

if ((e.getModifiersEx() onmask) == onmask) {

System.out.println("ok");

}

API文档:

getModifiersEx

public int getModifiersEx()

返回此事件的扩展修饰符掩码。扩展修饰符表示所有模式键的状态,例如 ALT、CTRL、META 和事件发生后那一刻的鼠标按钮

例如,如果用户在按下 button 1 后又按下 button 2,然后以相同的顺序释放这两个按钮,则会生成以下事件序列:

MOUSE_PRESSED: BUTTON1_DOWN_MASK

MOUSE_PRESSED: BUTTON1_DOWN_MASK | BUTTON2_DOWN_MASK

MOUSE_RELEASED: BUTTON2_DOWN_MASK

MOUSE_CLICKED: BUTTON2_DOWN_MASK

MOUSE_RELEASED:

MOUSE_CLICKED:

建议不使用 == 来比较此方法的返回值,因为在以后会增加新的修饰符。例如,检查 SHIFT 和 BUTTON1 已经按下而 CTRL 未按下的正确方法可以通过以下代码来演示:

int onmask = SHIFT_DOWN_MASK | BUTTON1_DOWN_MASK;

int offmask = CTRL_DOWN_MASK;

if (event.getModifiersEx() (onmask | offmask) == onmask) {

...

}

即使添加了新的修饰符,上述代码仍然有效。

从以下版本开始:

1.4

JAVA扫雷游戏问题

能得到当前 JLabel 的 x, y 值计算出来。clickedLabel.getBounds() 或 mouseClickedEvent.getPoint() 。

理论上,所有格子都是相同的正方形,所以只需要知道第一个格子的 x,y 应该能知道任意一个 (row,col) 的格子的 x, y,而当我们知道击中的格子的 x, y 时就应该能反过来计算出它是第几行第几列。这其中是单一映射关系。

帮忙下java 扫雷常量代码 提示 could not find the main class constants will exit 还抛出数组越界异常

for(int i=0;iTIME.length;i++)

{

FACE [i] = new ImageIcon("./img/di.gif");;//图 时间

}

改:

for(int i=0;iTIME.length;i++)

{

TIME[i] = new ImageIcon("./img/di.gif");;//图 时间

}

COPY的时候不认真吧。

java的扫雷程序的一些问题

楼主你好

(问题1)

lz说改变字体的大小有问题  这个应该不会这样的   改变字体(Font)是可以的

给lz一个例子:

import java.awt.*;

import javax.swing.*;

public class Test extends JFrame{

private JLabel[] num = new JLabel[100];

public Test(){

super("改变字体大小");

setLayout(new GridLayout(10,10));

for (int i = 0; i num.length; i++) {

num[i] = new JLabel("" + (i+1));

num[i].setFont(new Font("宋体", Font.PLAIN, 10));

//这里如果不设置字体大小  那么数字100就不能显示

getContentPane().add(num[i]);

}

setLocation(200,200);

setSize(200,200);

setVisible(true);

setResizable(false);

setDefaultCloseOperation(3);

}

public static void main (String[] args) {

new Test();

}

}   

(问题2)

你使用的应该是GridLayout这个布局管理器吧

那么在使用了java自带的布局管理器后  大多数都是不能修改这个布局管理器下的组件的大小和位置

如果你非要自己定义组件的大小  那么就只能不使用布局管理器了(setLayout(null))

在不使用布局管理器的情况下可以自由设置组件的大小的位置  但是这样很麻烦

希望能帮助你哈

JAVA 扫雷的一段代码求解释

int BombNum, BlockNum; // 当前雷数,当前方块数

int rightBomb, restBomb, restBlock; // 找到的地雷数,剩余雷数,剩余方块数

JButton start = new JButton(" 开始 ");

JPanel MenuPamel = new JPanel(); //新建一个区域,看名字是放菜单.但是打错字了.

JPanel bombPanel = new JPanel();//新建一个区域,雷区,由于雷是按钮,这里面应该都是按钮(JButton).

Bomb[][] bombButton; 2维组数,放地雷.

class Bomb extends JButton {

int num_x, num_y; // 第几号方块

int BombRoundCount; // 周围雷数

boolean isBomb; // 是否为雷

boolean isClicked; // 是否被点击

int BombFlag; // 探雷标记

boolean isRight; // 是否点击右键

public Bomb(int x, int y) {

num_x = x; //雷的位置 x,不解释

num_y = y; //雷的位置 y,不解释.获得是参数的值,所new Bomb的时候传入雷的位置,套嵌2个for循环.

BombFlag = 0; //是不是被插旗了

BombRoundCount = 9; //环绕数

isBomb = false; //是雷

isClicked = false; //被点

isRight = false; //是真的.( 以上都很好理解,直译^_^)

}

}

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

public void CountRoundBomb() {

for (int i = 0; i (int) Math.sqrt(BlockNum); i++) { //开方 障碍数

for (int j = 0; j (int) Math.sqrt(BlockNum); j++) { //同上,我判断,设计的雷区是正方形,

//这里是找完所有的坐标.

int count = 0;

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

if (bombButton[i][j].isBomb != true) { //如果不是雷

for (int x = i - 1; x i + 2; x++) { //从左边1个,到右边1个,一共3个

for (int y = j - 1; y j + 2; y++) { //我不知道,java y坐标是上还是下,总之

//邻近的上中下.(这里会多找一个自己)

if ( (x = 0) (y = 0)

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

(y ( (int) Math.sqrt(BlockNum)))) { //因边前面 x=i-1,所以排除超出边界

//的情况

if (bombButton[x][y].isBomb == true) { //如果是雷;

count++; //加一个

}

}

}

}

bombButton[i][j].BombRoundCount = count; //设置该Bomb环绕数的值

}

}

}

}

总之就是,建个一个Bomb类. 别外有一个方法统计那些不是雷的地方,的周围有几颗雷,到时候点开,显示出来.


新闻名称:java扫雷代码问题分析,Java扫雷毕业论文
新闻来源:http://scyanting.com/article/hcppoo.html