Java猜数字游戏(图形界面)

  本文是由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);
    }
}

运行后得到:
在这里插入图片描述
输入数字后得到:

运行成功后得到:
在这里插入图片描述

参与评论 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

深沉的男子

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值