本文是由java写的带图形界面的猜数字游戏,若想修改图形或者增加自己想要的东西,都可以在代码中添加。例如添加一个警告,若输入的不是数字或者是超过100的数、负数或者小数则跳出警告,并提示错误;或者添加组件想要的组件,使界面更加美观。
text5.java:
package 猜数字;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class text5 extends JFrame { //继承了JFrame,用JFrame来构造图形界面;
GameManager t1 = new GameManager(); //定义一个GameManager对象;
JButton button1;
JButton button2; //定义两个按钮;
JLabel label1 ,label2; //定义标签;
public text5() {
JPanel j1 = new JPanel(); //定义j1对象(轻量级容器,可以写在JFrame中);
j1.setLayout(new GridLayout(1, 1)); //将j1布局定义为GridLayout,一行一列;
button1 = new JButton("获取随机数");
button1.addActionListener(new s1(label2 )); //添加button1的监听;
j1.add(button1); //将button1加入对象j1;
JPanel j2 = new JPanel(); //与j1相同;
JTextField txt1 = new JTextField(); //创建单行文本对象txt1;
txt1.setPreferredSize(new Dimension(320, 210));//设置txt1文本大小;
txt1.addActionListener(new s2(txt1, label2)); //添加txt1的监听;
label1 = new JLabel("请输入:");
button2 = new JButton("猜");
button2.setPreferredSize(new Dimension(70,210));//设置button2的大小;
button2.addActionListener(new s2(txt1, label2));//添加button2的监听;
j2.add(label1);
j2.add(txt1);
j2.add(button2); //将label1、txt1和button2加入对象j2;
JPanel j3 = new JPanel(); //与j1相同;
label2 = new JLabel("开始");
j3.add(label2); //将label2加入对象j3;
t1.Again(); //调用GameManager.java中的Again方法;
Container con = getContentPane(); //定义con容器;
con.add(j1, BorderLayout.NORTH); //将j1放在t1的上方;
con.add(j2, BorderLayout.CENTER); //将j2放在t1的中间;
con.add(j3, BorderLayout.SOUTH); //将j3放在t1的下面;
setTitle("猜字游戏"); //界面标题;
setSize(500, 350); //界面大小;
setLocation(750, 400); //界面初始位置;
setVisible(true); //可视化;
}
class s1 implements ActionListener { //实现了ActionListener接口;
JLabel label = new JLabel();
s1( JLabel label) { //s1中传入参数JLabel;
this.label = label;
}
@Override
public void actionPerformed(ActionEvent e) { //抽象方法,当按下button1后运行接下来的语句;
t1.Again();
label2.setText("请再次输入的整数!");
}
}
class s2 implements ActionListener { //实现了ActionListener接口;
JTextField num = new JTextField(); //定义新的num对象(文本);
JLabel label = new JLabel();
s2(JTextField num, JLabel label) { //s2中传入参数JTextField、JLabel;
this.num = num;
this.label = label;
}
@Override
public void actionPerformed(ActionEvent e) { //按下button2后运行接下来的语句;
int number = Integer.parseInt(num.getText());//解析num中的字符串,返回数值;
int f;
f = t1.G(number); //调用GameManager.java中的G方法;
if (f == 1) {
label2.setText(number + "\t这个数太大了");
} else if (f == -1) {
label2.setText(number + "\t这个数太小了");
} else if (f == 0) {
label2.setText("恭喜你,猜对了!");
}
num.setText(""); //重新定义num,覆盖上次输入的值;
num.requestFocus(); //获取焦点(即运行完上面语句后跳回文本中);
}
}
public static void main(String[] args) {
new text5(); //运行方法text5;
}
}
GameManager.java:
package 猜数字;
import java.util.Random;
public class GameManager { //创建一个类来构造对象t1;
int number = 0;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public int G(int number) { //创建方法G,对传入text5的number和随机数进行比较;
if (number > this.number) { //当number大于随机数时,返回1;
return 1;
} else if (number < this.number) { //当number小于随机数时,返回-1;
return -1;
} else {
return 0;
}
}
public void Again() { //创建方法Again,创建随机数;
Random random = new Random();
int num = random.nextInt(99) + 1; //获取一个100以内的随机整数;
setNumber(num);
}
}
运行后得到:
输入数字后得到:
运行成功后得到: