【java图形化用户界面】猜数游戏

题目

编写一个猜数程序,该程序随机在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结果不对:
在这里插入图片描述

  • 19
    点赞
  • 146
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值