Java基于GUI完成的猜数字小游戏

猜数字小游戏

不废话想看看效果吧!
 在下面的框内输入数字,点击确定将在屏幕上出现相应的提示词!
当我们答对后就会出现:
这里会清屏并且重置被猜的数字!
如果你实在急着想知道答案:
这里再次清屏且重置被猜数字!

简要说明:

  1. 所猜测的数字为1~1000;
  2. 只能通过按确定输出答案,未设置Enter键直接输入的监控。
  3. 退出请直接点击叉叉无另外设置退出键。

代码段(许多解释已有注释)

设置一个类产生随机数,并可以通过其中的方法取得该随机数;


package GUI;

import java.util.Random;
public class numberMannerge {
	private int rnum = 0;
	Random r = new Random();
	public void setNumber() {
		this.rnum = r.nextInt(999) + 1;
	}
	public int getNumber() {
		return this.rnum;
	}
}

未直接通过继承JFrame类来实现,大家可以试试用继承JFrame类来实现,这样比较方便。

package GUI;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.awt.BorderLayout;
import javax.swing.*;
import javax.xml.ws.handler.MessageContext.Scope;

public class text_gui {
	private static void createAndShowGui() {
		int j = 0;//猜测的次数
		//创建一个用于生成数据获得数据的对象。
		numberMannerge manners = new numberMannerge();
		manners.setNumber();//设置一个随机数。
		JFrame f = new JFrame("猜数字小游戏");
		f.setLayout(new BorderLayout());//设置页面布局。
		f.setSize(600, 300);//GUI大小设置
		f.setLocation(300, 200);//GUI出现在屏幕的位置。
		//创建文本域showArea用来显示文本,并且指定其行列的大小。
		JTextArea showArea = new JTextArea(12,13);
		//创建JscrollPane滚动面板,滚动条策略:只有文本超出面板才会出现滚动条
		JScrollPane scrollpane = new JScrollPane(showArea);
		showArea.setEditable(false);//设置文本域不可编辑
		//设置文本框用于写入猜测的数字。
		JTextField inpuField = new JTextField(20);
		JLabel label = new JLabel("猜测数字");//标签
		JButton btn1 = new JButton("确定");
		JButton btn2 = new JButton("想看答案");
		btn2.addActionListener(e->{
			showArea.setText("");//将文本域内容清空。
			showArea.append("答案是:"+manners.getNumber()+"\n再来一次吧!\n");
			manners.setNumber();//设置一个新的随机数。
		});
		
		//运用匿名方法设置btn1的监控。
		btn1.addActionListener(e->{
			//获取玩家输入的数字。
			String content = inpuField.getText();
			boolean bool = true;
			//检测玩家是否未输入,或仅仅输入了空格。
			if(content != null&&!content.trim().equals("")) {
				Integer a = Integer.valueOf(content);
				int rnum = manners.getNumber();
				if(a==rnum) {
					//将我们要给玩家的提示输入文本域。
					showArea.append("你答对啦!!!"+"\n");
					bool = false;
					}
					else if(a < rnum) {
						showArea.append("你的数"+a+"小了点,再输入一次吧!"+"\n");	
					}
					else {
						 showArea.append("你的数"+a+"太大啦,再输入一次吧!"+"\n");
					}
			}
			else {
				showArea.append("输入不能为空!!!"+"\n");
			}
			if(!bool) {
				manners.setNumber();
				showArea.setText("");
				showArea.append("数字发生改变,开始新的一局!\n");
			}
			inpuField.setText("");
		});
		//将标签、按钮等组件放入panel容器中。
		JPanel panel = new JPanel();
		panel.add(label);
		panel.add(inpuField);
		panel.add(btn1);
		panel.add(btn2);
		//将各个容器放入顶级容器中。
		//并且为它们安排好在容器的位置。
		f.add(scrollpane,BorderLayout.PAGE_START);
		f.add(panel,BorderLayout.CENTER);
		f.setVisible(true);//窗体是否可见。
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭符号。
	}
	public static void main(String[] args) {
		//使用SwingUtilities工具类调用createAndShowGui方法执行并显示GUI程序。
		SwingUtilities.invokeLater(text_gui::createAndShowGui);
	}

}
  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

“胡”说八道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值