java面向对象基础(猜数字小游戏)

java面向对象基础(猜数字小游戏)


嗨!收到一张超级美丽的风景图,愿你每天都能顺心!

图片描述

再谈猜数字小游戏

一、需要实现的效果

先想好小游戏需要实现的效果,由计算机随机生成一个1到100的整数,这个数是我们看不见的,而我们需要去猜这个数,如果猜错了会提示是猜大了还是猜小了,直到猜对了,游戏才会结束。


二、无界面效果,只实现功能(没有用面向对象的编程思想)

需要用到的有Random来控制生成随机数。由Scanner来控制键盘输入。就可以实现这个效果。话不多说,接下来看代码。

import java.util.Random;
import java.util.Scanner;

public class guess_figure {

    public static void main(String[] args) {
        //生成一个随机数
        Random random = new Random();
        //Random方法取头不取尾
        int random_number = random.nextInt(101);
        //Scanner输入流
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("请输入一个0~100的随机整数");
            int figure = scanner.nextInt();
            if (figure < random_number) {
                System.out.println("数字小了");
            }
            else if (figure == random_number) {
                System.out.println("数字对了");
                //释放scanner,避免占用空间
                scanner.close();
                break;
            }
            else {
                System.out.println("数字大了");
            }
        }
    }
}


看下终端的输出结果:
在这里插入图片描述


三、无界面效果,只实现功能(使用了面向对象的编程思想)

细心的小伙伴一定发现了,这串代码全是在主函数中实现的,这显然不合适java面向的编程思想,我们不妨创建一个类,在这个类中创建方法去使用我们要用的ScannerRandom。最后在主函数中创建一个对象,来调用这个类中的方法。话不多说,上代码。

import java.util.Random;
import java.util.Scanner;

public class guess_figure {
    //private 封装数据成员
    private Scanner scanner;
    private Random random;
    
    public guess_figure() {
        this.scanner = new Scanner(System.in);
        this.random = new Random();
    }
    public int scanner_int() {
        return scanner.nextInt();
    }

    public int nextInt() {
        return random.nextInt(101);
    }

    public void output() {
        int random_number = nextInt();
        while (true) {
            System.out.println("请输入一个0~100的随机整数");
            int figure = scanner_int();
            if (figure < random_number) {
                System.out.println("数字小了");
            } else if (figure == random_number) {
                System.out.println("数字对了");
                // 释放scanner,避免占用空间
                scanner.close();
                break;
            } else {
                System.out.println("数字大了");
            }
        }
    }
    public static void main(String[] args) {
        guess_figure shk = new guess_figure();
        shk.output();
    }
}

结果与上述终端代码大同小意。很明显,这串代码的主函数只有一个对象和一个方法。方便我们更加直观的理解代码,并且容易修改代码,假若我想要加大难度选择1到1000之间的一个数就只需要修改nextInt方法里将random.nextInt(101)修改成random.nextInt(1001),就可以实现。


接下来我们来一个模块一个模块的分析一下这串代码


public guess_figure() {
        this.scanner = new Scanner(System.in);
        this.random = new Random();
    }

这串代码初始化了两个对象scanner和random


public int scanner_int() {
        return scanner.nextInt();
    }

定义一个方法,返回输入的值。


public int nextInt() {
        return random.nextInt(101);
    }

定义一个方法返回随机生成的数的值


 public int nextInt() {
        return random.nextInt(101);
    }

    public void output() {
        int random_number = nextInt();
        while (true) {
            System.out.println("请输入一个0~100的随机整数");
            int figure = scanner_int();
            if (figure < random_number) {
                System.out.println("数字小了");
            } else if (figure == random_number) {
                System.out.println("数字对了");
                // 释放scanner,避免占用空间
                scanner.close();
                break;
            } else {
                System.out.println("数字大了");
            }
        }
    }

这里就是最重要的输出部分了,整体思路和第一个代码差不多,只不过小小的调用了前面的两个方法。


四、带有界面的猜数字小游戏

前面两串代码看起来是不是挺简单的,接下来我们上升一点难度,制作一个界面,在界面当中去实现我们所需要的功能,那么首先我们要去考虑一下什么可以制作界面,其实不难想到,java图形界面设计的容器(JFrame)注:若对JFrame不了解的友友们可以去查百度或者搜API

我们来一步一步去完成。

1、创建界面
直接使用JFrame中的方法

    setTitle("猜数字游戏");//设置标题
    setSize(300,200);//设置窗口大小
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//用来关闭窗口


2、由于我们的界面还需要按钮来确定,别急,我们可以直接使用以下代码来实现,使用我们的JPanel,用于创建模板。

    JPanel panel=new JPanel();
    setContentPane(panel);

创建了一个新的JPanel实例,他包含了按钮和文本框,接下来调用setContentPane()方法,内容面板为panel。

通常这两行代码用于创建初始化图形界面窗口内容,友友们可以记住他。


3、界面有了之后就要生成随机数,想必生成随机数怎么写大家已经烂熟于心了把

    Random random = new Random();
    int random_number = random.nextInt(101);

4、接下来就是整体的输出了,不过有所不同的是,我们不是使用Scanner去控制输入了,因为我们是在消息框中去输入。可以使用一下代码。所以我们可以使用JOptionPane,它当中的方法可以创建对话框并在对话框中输入

    // 显示请求用户输入内容的问题消息对话框,它以 parentComponent 为父级。
    String input = JOptionPane.showInputDialog("请输入一个0~100的随机整数");
    // 使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
    int figure = Integer.parseInt(input);

JOptionPane可以非常方便地创建一些简单的对话框
showInputDialog输入对话框,提示要求输入某些信息。
由于接下来要输入的是一个整数,所以要将对话框中的字符型转换成整型。


5、判断是否猜对,又是经典的条件判断语句。这里要使用showMessageDialog方法来指定消息框内容是大了还是小了。

    if (figure < random_number) {
        //指定消息框内容
        JOptionPane.showMessageDialog(null, "数字小了");
    }
    else if (figure == random_number) {
        JOptionPane.showMessageDialog(null, "数字对了,你赢了");
        break;
    }
    else {
        JOptionPane.showMessageDialog(null, "数字大了");
    }

6、最后一步,在主函数创建一个对象

    guess_figure game = new guess_figure();
    //设置对象可见,通过窗口显示
    game.setVisible(true);

整体代码演示

import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class guess_figure extends JFrame {
    public guess_figure() {
        //设置界面标题大小,以及关闭程序
        setTitle("猜数字游戏");
        setSize(300,200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //方便更改JFrame中的内容面板,实现动态更行GUI界面
        JPanel panel=new JPanel();
        setContentPane(panel);
        //生成随机数
        Random random = new Random();
        int random_number = random.nextInt(1001);
        while (true) {
            // 显示请求用户输入内容的问题消息对话框,它以 parentComponent 为父级。
            String input = JOptionPane.showInputDialog("请输入一个0~1000的随机整数");
            // 使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
            int figure = Integer.parseInt(input);
            if (figure < random_number) {
                //指定消息框内容
                JOptionPane.showMessageDialog(null, "数字小了");
            }
            else if (figure == random_number) {
                JOptionPane.showMessageDialog(null, "数字对了,你赢了");
                break;
            }
            else {
                JOptionPane.showMessageDialog(null, "数字大了");
            }
        }
    }

    public static void main(String[] args) {
        guess_figure game = new guess_figure();
        //设置对象可见,通过窗口显示
        game.setVisible(true);
    }
}

看看带有界面的效果展示在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结语

本次分享就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区留言,如果给小伙伴们带来了一些收获,请留下你的小赞,你的点赞和关注将会成为博主分享每日学习的动力。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值