利用图形用户界面设计实现“猜数字游戏”

功能如下:1)游戏开始界面,能够显示游戏规则。2)游戏开始后,程序随机产生一个1000以内的数r(这个数的每一位不相同,例如999是不符合要求的数)。3)在界面输入3个数... 功能如下:
1) 游戏开始界面,能够显示游戏规则。
2)游戏开始后,程序随机产生一个1000以内的数r(这个数的每一位不相同,例如999是不符合要求的数)。
3)在界面输入3个数字(每个数字都为0—9之间的数)。如果有一个数字与r中相应的数字在位置上完全一致,则记一个A;如果有一个数与所给的四个数中的一个相同,但位置不同,则记一个B。
4)统计所得的A和B的个数,并显示出来,显示形如“xAyB”,其中“x”为输入的数与默定的数中数字和位置相同的数,y为只有数字相同的数的个数。
5) 每玩一局,只有8次机会。如果在8次之内猜对了,就赢了,提示“你用了x次,猜对了数字”(x为你猜数的次数),并询问是否继续下一局。如果猜了8次还没猜出来,这盘游戏就输了,提示你输了,询问是否继续下一局。
要是谁写了,对的!我会加50分!
展开
 我来答
泰然还素净的海鸥H
2012-06-20 · TA获得超过332个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:137万
展开全部
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TestGuessNumber extends JFrame {

private static final long serialVersionUID = -4922390040187620343L;
private JLabel label;
private JTextField[] text = new JTextField[3];
private JButton button;

private String[] nums = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
private String[] number;
private int times;

public static void main(String[] args) {
new TestGuessNumber();
}

public TestGuessNumber() {
JOptionPane.showMessageDialog(null, "。。。", "游戏规则",
JOptionPane.INFORMATION_MESSAGE); // 。。。处填写规则,换行用“\n”
init();
}

private void init() {
number = getNumber();
this.setTitle("猜数字");
this.setBounds(500, 400, 200, 160);
this.setResizable(false);
this.getContentPane().setLayout(new GridLayout(3, 1));
label = new JLabel("请输入你猜的数字", JLabel.CENTER);
this.getContentPane().add(label);
JPanel panel = new JPanel(new FlowLayout());
for (int i = 0; i < text.length; i++) {
text[i] = new JTextField(3);
panel.add(text[i]);
}
this.getContentPane().add(panel);
button = new JButton("确定");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
for (JTextField tmp : text) {
if (! tmp.getText().matches("^[0-9]{1}$")) {
JOptionPane.showMessageDialog(null, "每个输入框请输入一位数字!");
return;
}
}
if (times++ >= 8) {
if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(null,
"对不起,请再接再厉!\n是否继续?", "失败", JOptionPane.YES_NO_OPTION)) {
dispose();
new TestGuessNumber();
return;
} else {
dispose();
System.exit(0);
}
}
if (showResult()) {
if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(null,
"你用了" + times + "次,猜对了数字!\n是否继续?",
"成功", JOptionPane.YES_NO_OPTION)) {
dispose();
new TestGuessNumber();
} else {
dispose();
System.exit(0);
}
}
}
});
this.getContentPane().add(button);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
this.setVisible(true);
// System.out.println(number[0] + number[1] + number[2]);
}

private String[] getNumber() {
String[] num = new String[3];
num[0] = nums[(int) (Math.random() * 10)];
do {
num[1] = nums[(int) (Math.random() * 10)];
} while (num[1] == num[0]);
do {
num[2] = nums[(int) (Math.random() * 10)];
} while (num[2] == num[0] || num[2] == num[1]);
return num;
}

private boolean showResult() {
int A = 0, B = 0;
String num1 = text[0].getText().trim();
String num2 = text[1].getText().trim();
String num3 = text[2].getText().trim();
if (num1.equals(number[0])) {
A++;
} else if (num1.equals(number[1]) || num1.equals(number[2])) {
B++;
}
if (num2.equals(number[1])) {
A++;
} else if (num2.equals(number[0]) || num2.equals(number[2])) {
B++;
}
if (num3.equals(number[2])) {
A++;
} else if (num3.equals(number[0]) || num3.equals(number[1])) {
B++;
}
label.setText("第" + times + "次:" + A + "A" + B + "B");
return A == 3 ? true : false;
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-06-19
展开全部
分太少,没有现成的没人给你写,哎..................
追问
你要几分???
追答
别人帮你写吧,人累了,给你个建议而已,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式