题目
编写一个猜数程序,该程序随机在1到1000的范围中选择一个供用户猜测的整数。界面上提供一个文本框来接收用户输入的猜测的数,如果用户猜得太大,则背景变为红色,如果猜得太小,背景变为蓝色。用户猜对后,文本框变为不可编辑,同时提示用户猜对了。界面上提供一个按钮,使用户可以重新开始这个游戏。在界面上还需显示用户猜测的次数。示例输出如图所示。
代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class numberGuessing {
public static void main(String[] args) {
DrawFrame frame=new DrawFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class DrawFrame extends JFrame
{
private static int count=0;//猜测次数
private int rightNumber;//随机产生的供猜测的数字
private JTextField text;//输入的数字
private JLabel tip;//猜测次数提示
private JPanel panel;//中心输入框部分面板
private JLabel result;//猜测结果提示
private JButton button1=new JButton("确认");
private JButton button2=new JButton("重新开始");
private JButton button3=new JButton("退出");
public DrawFrame()
{
setSize(400,200);
setTitle("Guess the number");
rightNumber=(int)(Math.random()*100);
//添加顶部次数提示
tip=new JLabel("你已经猜了"+count+"次",JLabel.LEFT);
//添加中心输入框部分
panel = new JPanel();
JLabel input=new JLabel("输入猜测的数");
panel.add(input);
text=new JTextField(20);
panel.add(text);
result=new JLabel();//显示猜测结果
panel.add(result);
//添加底部按钮
JPanel buttons= new JPanel();
//按钮的监听器,有两个类,确认按钮一个类,重新开始和退出一个类
ActionListener listener1=new ComfirmListener();
button1.addActionListener(listener1);
ActionListener listener2=new OtherListener();
button2.addActionListener(listener2);
button3.addActionListener(listener2);
//将按钮添加到panel中
buttons.add(button1);
buttons.add(button2);
buttons.add(button3);
//将各部分添加到框架中,用了默认的BorderLayout布局
add(tip,"North");
add(panel,"Center");
add(buttons,"South");
}
//确认按钮的监听器类
class ComfirmListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
//猜测正确
if(Integer.parseInt(text.getText())==rightNumber)
{
//设置文本框不可编辑
text.setEditable(false);
//提示猜测次数+1
tip.setText("你已经猜了"+(++count)+"次");
//调整背景色为默认背景色
Color defaultColor = getBackground();
panel.setBackground(defaultColor);
//显示猜测结果
result.setText("猜对啦");
}
//小于
else if(Integer.parseInt(text.getText())<rightNumber)
{
panel.setBackground(Color.blue);
tip.setText("你已经猜了"+(++count)+"次");
result.setText("太小");
}
else
{
panel.setBackground(Color.red);
tip.setText("你已经猜了"+(++count)+"次");
result.setText("太大");
}
}
}
//重新开始和退出按钮的监听器
class OtherListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
//重新开始
if(event.getSource()==button2)
{
//清除文本框内容
text.setText("");
text.setEditable(true);
//重新选一个供猜测数字
rightNumber=(int)(Math.random()*100);
//调整背景色为默认背景色
Color defaultColor = getBackground();
panel.setBackground(defaultColor);
//猜测次数置0
count=0;
tip.setText("你已经猜了"+count+"次");
//清除原猜测结果
result.setText("");
}
//退出则关闭窗口
else
{
setVisible(false);
}
}
}
}
测试结果
初始页面:
开始猜数:
重新开始以后,再次输入57结果不对: