猜数字小游戏

不废话想看看效果吧!

java实验猜数字游戏的分析与思考 java猜数字游戏gui_java


当我们答对后就会出现:

java实验猜数字游戏的分析与思考 java猜数字游戏gui_开发语言_02


如果你实在急着想知道答案:

java实验猜数字游戏的分析与思考 java猜数字游戏gui_随机数_03

简要说明:

  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);
	}

}