Java面向对象编程练习题:猜数字游戏

项目名称:猜数字游戏
项目说明:定义一个类,有一个成员变量初值为100。定义一个测试类对这个类的成员变量进行猜测,如果大了,则提示大了,小了则提示小了,游戏循环继续,若相等则提示猜测成功,游戏结束。
public class GuessNumber {
    private int num;

    public GuessNumber() {
        this.num = 100;
    }

    public Boolean guessNumber(int num){
        if(num > this.num){
            System.out.println("输入的数字大了,请重新输入!");
            return false;
        }else if(num < this.num){
            System.out.println("输入的数字小了,请重新输入!");
            return false;
        }else {
            System.out.println("猜对了,游戏结束!");
            return true;
        }
    }
}

定义测试类
import java.util.Scanner;

public class Application {
    public static void main(String[] args) {
        GuessNumber guessNumber = new GuessNumber();
        Scanner scanner = new Scanner(System.in);
        System.out.println("开始猜数字游戏,请输入数字:");

        while (true){
            int numInput = scanner.nextInt();
            Boolean result = guessNumber.guessNumber(numInput);
            if (result){
                break;
            }
        }

    }
}

测试结果:

 

 

改进一:

由于初始变量值是预设的,我们已经知道了,这样猜测的话,就没有什么成就感,我们可以把初始值用随机数来定义。

public class GuessNumber {
    private int num;

    public GuessNumber() {
        this.num = (int)(Math.random() * 100);
    }

    public Boolean guessNumber(int num){
        if(num > this.num){
            System.out.println("输入的数字大了,请重新输入!");
            return false;
        }else if(num < this.num){
            System.out.println("输入的数字小了,请重新输入!");
            return false;
        }else {
            System.out.println("猜对了,游戏结束!");
            return true;
        }
    }
}

测试结果:

 

 

 

 

 改进二:既然是随机数,那么我们是不是可以尝试下跟电脑比赛了,每一轮人输入一次数字,电脑自动随机一个数,看谁猜测的对。

定义3个类和1个测试类

Number类:存放系统随机给的数字

UserGuessNumber:用户猜测类

BotGuessNumber:机器(电脑)猜测类

Application:测试类

 

Number类

public class Number {
    private int num;

    public Number() {
        this.num = (int)(Math.random() * 100);
    }

    public int getNum() {
        return num;
    }
}

UserGuessNumber类

public class UserGuessNumber {

    public Boolean guessStart(int numInput, int key){

        if(numInput > key){
            System.out.println("您输入的数字大了!");
            return false;
        }else if(numInput < key){
            System.out.println("您输入的数字小了!");
            return false;
        }else {
            System.out.println("您猜对了!");
            return true;
        }
    }
}

BotGuessNumber类

public class BotGuessNumber {
    int minNum;//随机数的最小值
    int maxNum;//随机数的最大值
    int num;

    public BotGuessNumber() {
        this.minNum = 0;
        this.maxNum = 100;
        this.num = (int)(Math.random() * this.maxNum + this.minNum);
    }

    public int getNum() {
        return (int)(Math.random() * (this.maxNum - this.minNum) + this.minNum);
    }

    public Boolean guessStart(int numInput, int key){

        System.out.print("电脑给出的数字是:"+numInput);

        if(numInput > key){
            this.maxNum = numInput;
            System.out.print(",输入的数字大了!");
            System.out.println("电脑将数字范围调整为:[" + this.minNum + "  "+ this.maxNum+"]");
            return false;
        }else if(numInput < key){
            this.minNum = numInput;
            System.out.print(",输入的数字小了!");
            System.out.println("电脑将数字范围调整为:[" + this.minNum + "  "+ this.maxNum+"]");
            return false;
        }else {
            System.out.println(",猜对了!");
            return true;
        }

    }
}

测试类:

import java.util.Scanner;

public class Application {
    public static void main(String[] args) {
        BotGuessNumber botGuessNumber = new BotGuessNumber();
        UserGuessNumber userGuessNumber = new UserGuessNumber();
        Number number = new Number();

        Scanner scanner = new Scanner(System.in);
        System.out.println("开始进行猜数字游戏....:");

        while (true){
            System.out.print("请输入数字:");
            int userNumInput = scanner.nextInt();

            Boolean userGuessResult = userGuessNumber.guessStart(userNumInput,number.getNum());
            Boolean botGuessResult = botGuessNumber.guessStart(botGuessNumber.getNum(),number.getNum());

            if (botGuessResult && userGuessResult){
                System.out.println("您和电脑都猜对了!游戏结束!");
                break;
            }else if(botGuessResult){
                System.out.println("电脑猜对了!游戏结束!");
                break;
            }else if(userGuessResult){
                System.out.println("您猜对了!游戏结束!");
                break;
            }
            System.out.println("==============================");
        }

    }
}

测试结果:

 

 

当然,可以进一步延伸,设计成多个电脑同事猜数字,看谁先猜中。

 

 

 

 

 

 

 
posted @ 2021-01-25 23:22  Danny·茄子  阅读(778)  评论(0)    收藏  举报