求代码~~~Java 猜数字小游戏~~跪拜

xwl1231991 2010-12-09 10:58:23
猜数字游戏
要求:计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。
要求提交Application和Applet两个版本的程序

大家帮帮忙啊、小妹谢过了 拜托拜托
...全文
244 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
艳沐石 2011-12-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 abc_0592 的回复:]

没人回答,我也想知道代码是什么。。有图形化界面的版本
[/Quote]

送你一个简单的~~~


class View extends JFrame {
private static final long serialVersionUID = -5260375337613779312L;

// 按钮名称
private static final String CREATE = "新建";
private static final String RESET = "重来";
private static final String SUBMIT = "提交";
private static final String ANSWER = "答案";
// 关于窗口的数据信息
private static final int SIZE_WIDTH = 300;
private static final int SIZE_HEIGHT = 160;
private static final int COMMAND_LOCAL = SIZE_WIDTH - 100;
// 生成随机数范围
private static final int DATA_ROUND = 100;
// 输入数据的格式:1-2位数字
private static final String DATA_REGEX = "^\\d{1,2}$";
// 提示信息标题
private static final String WARNING_TITLE = "提示";
// 提示信息
private static final String DATA_ERROR = new StringBuffer().append(
"数据非法,范围(0-").append(DATA_ROUND - 1).append(")").toString();
private static final String OPER_ERROR = "非法操作";
private static final String DATA_SMALL = "数值小了..";
private static final String DATA_LARGE = "数值大了..";
private static final String INFO_ANSWER = "很遗憾,答案是{0}";
private static final String INFO_CREATE = "<html><b>?</b>,猜一猜</html>";
private static final String INFO_SUCCESS = "<html>恭喜您,答对了..<br>用时{0}s,得分{1}</html>";
private static final String INFO_RESET = "游戏已经从新开始";
private static final String INFO_TO_START = "请点击“新建”";

// 控件
JLabel lblWarning;
JTextField txtEnter;
JButton btnCreate;
JButton btnReset;
JButton btnSubmit;
JButton btnAnswer;

// 事件监听器
private CommandListener listener = new CommandListener();
// 生成随机数数值
private int data = 0;
// 验证次数
private int times = 0;
// 开始时间
private Date startTime = null;

/**
* 构造器<br/>
* 说明:定义窗体标题,配置相关属性,将命令按钮和信息域添加到窗体中,设置游戏处于结束状态
*/
public View() {
super("猜数字");
configBaseAttr();
configCommand();
configFileds();
finish();
}

// 添加信息域
private void configFileds() {
lblWarning = new JLabel(INFO_TO_START);
lblWarning.setBounds(30, 20, 150, 40);
add(lblWarning);

txtEnter = new JTextField();
txtEnter.setBounds(30, 80, 100, 20);
add(txtEnter);
}

// 添加命令按钮
private void configCommand() {
btnCreate = createCommand(CREATE, 15);
btnReset = createCommand(RESET, 40);
btnSubmit = createCommand(SUBMIT, 65);
btnAnswer = createCommand(ANSWER, 90);
}

// 配置基本属性
private void configBaseAttr() {
int x = Toolkit.getDefaultToolkit().getScreenSize().width;
int y = Toolkit.getDefaultToolkit().getScreenSize().height;
// 屏幕中间显示
setBounds((x - SIZE_WIDTH) / 2, (y - SIZE_HEIGHT) / 2, SIZE_WIDTH,
SIZE_HEIGHT);
// 自定义布局
setLayout(null);
// 关闭操作
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

// 初始游戏
private void initGame() {
data = random();
times = 0;
lblWarning.setText(INFO_CREATE);
txtEnter.setText("");
startTime = new Date();
System.out.println("this time, the data is " + data);
}

// 游戏启动状态
private void start() {
status(true);
}

// 游戏结束状态
private void finish() {
status(false);
}

/*
* 生成命令按钮(配置了按钮的一些共同属性)
* @param name 名称
* @param y 纵坐标
* @return 按钮
*/
private JButton createCommand(String name, int y) {
JButton temp = new JButton(name);
temp.setBounds(COMMAND_LOCAL, y, 65, 18);
add(temp);
temp.addActionListener(listener);
return temp;
}

// 生成随机数
private int random() {
return (int) (Math.random() * DATA_ROUND);
}

// 游戏的状态控制
private void status(boolean status) {
txtEnter.setEnabled(status);
btnReset.setEnabled(status);
btnSubmit.setEnabled(status);
btnAnswer.setEnabled(status);
}

// 根据游戏中使用的命令,定义监听器
class CommandListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
JButton key = (JButton) e.getSource();
if (isEqual(key, CREATE)) { // 创建游戏
start();
initGame();
} else if (isEqual(key, RESET)) { // 重置游戏
display(INFO_RESET);
initGame();
} else if (isEqual(key, SUBMIT)) { // 提交操作
if (isData(txtEnter.getText())) {
times++; // 输入正确,则验证次数加1
int enter = getValue(txtEnter);
if (enter == data) { // 回答正确
Date now = new Date(); // 获取当前时间
lblWarning.setText(format(INFO_SUCCESS, (now.getTime()-startTime.getTime())/1000, score()));
finish();
} else if(enter > data) { // 大了
display(DATA_LARGE);
} else { // 小了
display(DATA_SMALL);
}
} else {
display(DATA_ERROR);
}
} else if (isEqual(key, ANSWER)) { // 获取答案
lblWarning.setText(format(INFO_ANSWER, data));
finish();
} else { // 为监听操作
display(OPER_ERROR);
}
}

// 简单计算分数
private int score() {
if (times > 10) {
return 5;
}
return (11 - times) * 10;
}

// 验证事件的命令
private boolean isEqual(JButton key, String command) {
return command.equals(key.getText());
}

// 弹出框显示信息
private void display(String message) {
JOptionPane.showMessageDialog(View.this, message, WARNING_TITLE,
JOptionPane.WARNING_MESSAGE);
}

// 输入数值是否合法
private boolean isData(String value) {
return value.matches(DATA_REGEX);
}

// 获取文本框中的数值
private int getValue(JTextField text) {
return Integer.valueOf(text.getText());
}

// 格式化消息
private String format(String pattern, Object... params) {
return MessageFormat.format(pattern, params);
}
}
}
冰雪燕恒 2011-12-21
  • 打赏
  • 举报
回复
import java.util.Scanner;
import java.util.Random;

publlic class GuessNUM {
public static void main(String[] args) {
Random r = new Random();
int i = r.nextInt(1000); //生成一个1000以内的随机整数
System.out.println("生成的随机整数="+i);
new GuseeNUM().guessNum(i); //调用方法
}
public void guessNum(int num) {
Scanner scan = new Scanner(System.in); //得到控制台输入的数
String rex = "^[0-9]+&";
int flag = time = 1; //flag 控制输入非整数次数 大于3次系统退出 ,time 记录答错次数,不包括输入格式不争取的。
while(true) {
if(flag>3) {
System.out.println("非整数输入次数太多,系统推出!");
break;
}
String s = scan.next();
if(!s.matchs(rex)) {
System.out.println("输入数据格式有误,请重新输入,还有"+(3-flag)+"次机会");
flag ++;
continue;
}
int input = Integer.parseInt(s);
if(num == input) {
System.out.println("恭喜您,在第"+time+"次努力后终于答对了");
}else if(num < input) {
System.out.println("对不起,你猜大了");
time ++;
}else {
System.out.println("对不起,你猜小了");
time ++;

}
}
}
}


abc_0592 2011-12-21
  • 打赏
  • 举报
回复
没人回答,我也想知道代码是什么。。有图形化界面的版本

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧