请各位高手帮帮忙,编个JAVA程序(急)!!!!

编写一个游戏程序。创建一个如下的界面;4623598117110使用网格布局:添加12个按钮,每一个按钮都注册动作的监听接口。初始化第一个按钮显示标签为空。其他按钮上的标... 编写一个游戏程序。创建一个如下的界面;

4 6
2 3 5
9 8 11
7 1 10

使用网格布局:添加12个按钮,每一个按钮都注册动作的监听接口。初始化第一个按钮显示标签为空。其他按钮上的标签随机产生。分别为1—11,当点击按钮时,如果在这个按钮的上、下、左、右中存在着空标签,这将它和这个空标签交换。否则显示出错信息。如:点击标签2的按钮时,界面作变换:

4 6 2 4 6
2 3 5 3 5
9 8 11 → 9 8 11
7 1 10 7 1 10

要求最后将这个界面变成如下图所示的图形,并统计总共点击了多少次。

1 2 3
4 5 6
7 8 9
10 11

我是菜鸟,什么都不懂.请高手帮帮忙写个代码,(6月27日之前要交)我现仅学过 Java语言程序设计(第二版) 最好能在这本书范围内.
_ 4 6
2 3 5
9 8 11
7 1 10

- 4 6
2 3 5
9 8 11
7 1 10

2 4 6
- 3 5
9 8 11
7 1 10

1 2 3
4 5 6
7 8 9
10 11 -

^_^不好意思,刚写错了 更正一下
展开
 我来答
jgjcq
2008-06-23 · TA获得超过270个赞
知道小有建树答主
回答量:434
采纳率:0%
帮助的人:227万
展开全部
//主类
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.border.BevelBorder;

public class game extends JFrame {
private static final long serialVersionUID = 342676014673887411L;
private myLabel[] mylabel = new myLabel[12];// 按钮
private Point[] p = new Point[12];// 按钮位置
private myLabel labelTemp;// 上一个被选择的按钮
private static int count;// 总共按了多少下

public game() {
getContentPane().setLayout(new GridLayout(0, 3));
for (int i = 0; i < mylabel.length; i++) {
p[i] = new Point();
if (i < 3) {
p[i].y = 0;
p[i].x = i;
} else if (i < 6) {
p[i].y = 1;
p[i].x = i - 3;
} else if (i < 9) {
p[i].y = 2;
p[i].x = i - 6;
} else if (i < 12) {
p[i].y = 3;
p[i].x = i - 9;
}
mylabel[i] = new myLabel();
mylabel[i].setHorizontalAlignment(JLabel.CENTER);
mylabel[i].setBorder(new BevelBorder(BevelBorder.LOWERED));
mylabel[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Clicked(e);
}

});
mylabel[i].setP(p[i]);
getContentPane().add(mylabel[i]);

}
randInitText();
for (int i = 0; i < 12; i++) {
if (mylabel[i].getText().equals("") || mylabel[i].getText() == null) {
labelTemp = mylabel[i];
mylabel[i].setBackground(Color.BLUE);
}
}
this.setBounds(140, 150, 260, 400);
this.setVisible(true);
}

/*
* 初始化按钮的值
*/
public void randInitText() {
Set<Integer> set = new HashSet<Integer>();
while (true) {
int temp = randNumber();
set.add(temp);
if (set.size() == 12) {
break;
}
}
int a = 0;
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
Integer temp = (Integer) it.next();
if (temp != 12)
mylabel[a].setText("" + temp);
a++;
}
}

/*
* 返回一个1-12的随机数字
*/
public int randNumber() {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
return (int) (Math.random() * 12 + 1);
}

/*
* 鼠标单击事件
*/
public void Clicked(ActionEvent e) {
myLabel tp = (myLabel) e.getSource();
Point pp = tp.getP();
if (labelTemp != null) {
String temp = tp.getText();
if ((labelTemp.X() == pp.x)
&& ((Math.abs(labelTemp.Y() - pp.y) == 1))) {
labelTemp.setBackground(Color.WHITE);
tp.setBackground(Color.BLUE);
tp.setText(labelTemp.getText());
labelTemp.setText(temp);
count++;
} else if ((labelTemp.Y() == pp.y)
&& ((Math.abs(labelTemp.X() - pp.x) == 1))) {
labelTemp.setBackground(Color.WHITE);
tp.setBackground(Color.BLUE);
tp.setText(labelTemp.getText());
labelTemp.setText(temp);
count++;
} else {
return;
}

} else {
tp.setBackground(Color.BLUE);
}
if (this.isWin()) {
JOptionPane.showMessageDialog(this, "恭喜你赢了,总共用了:" + count + "步");
count = 0;
randInitText();
return;
}
labelTemp = (myLabel) e.getSource();
}

/*
* 判断是否赢了
*/
public boolean isWin() {
for (int i = 0; i < 11; i++) {
if (!mylabel[i].getText().equals(("" + (i + 1)).trim())) {
return false;
}
}
return true;
}

public static void main(String[] args) {
new game().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
//按钮类
import java.awt.Color;
import java.awt.Point;
import javax.swing.JButton;

public class myLabel extends JButton {
private Point p;
public myLabel() {
this.setBackground(Color.WHITE);
}
public Point getP() {
return p;
}
public void setP(Point p) {
this.p = p;
}
public int X() {
return p.x;
}
public int Y() {
return p.y;
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式