javaSE练习Day08

第一部分:猜数游戏--

练习面向对象使用3步走,创建对象,实例化对象,使用对象

第二部分:权限修饰符探究

第三部分:构造方法探究

第四部分:缺省,this,super,类修饰符探究

第一部分

文件为 MyTest ,Test GameVal Game

MyTest.java(写了游戏思路)

import java.util.Scanner;

public class MyTest {
    public static void main(String[] args){

    }


    //猜数游戏方法过程,算是思路汇总
    //首先是游戏开始前需要设置上下限,产生一个随机数。
    //然后是最多10次,最少一次的循环,
    // 每次循环先拿到键盘输入的一个数据(这里需要保证数据的正确性合理性)
    //  然后将拿到的数据和随机数比较,若等于提示用户猜测成功,结束循环,若不等于,给用户提示
    //每次循环结束,循环次数+1,减少一次循环
    //理想条件下,结束条件是:10都没有猜成功或10次中有一次猜测成功。
    public void bullsCow(String[] args){
        //定义下限
        int from = 0;
        //定义上限
        int to = 100;
        //随机数范围[from,to]
        int num = (int)(Math.random()*(to-from+1)+from);
        //for 计数型循环 最多10次
        for(int time = 10;time>0;time--){
            //提示用户
            System.out.printf("请输入一个在[%d,%d]范围内的整数",from,to);
            //创建对象--若循环次数过大,请在外面创建局部变量
            Scanner scn = new Scanner(System.in);
            //拿到键盘输入,这个数需要用与比较
            int temp = scn.nextInt();

            if(temp==num){
                System.out.println("你猜对了");
                //停止循环
                break;
            }
            else{
                if(temp>num){
                    System.out.println("您输入的数据过大");
                }
                else{
                    System.out.println("您输入的数据过小");
                }
            }
        }
        //for循环结束,代表游戏结束
        System.out.println("游戏结束");
    }

    //不定个数形参和数组对比

    public void method(int ...a){

    }
}

面向对象练习

Game.java类(表示整个游戏)

import java.util.Scanner;

public class Game {

    //成员属性,开始的值
    private int from = 0;
    //游戏等级
    private int state = 1;
    //每个等级增加的量
    private int add = 100;
    //次数
    private int fre = 10;


    public void menu() {
        while (true) {
            System.out.println("0设置。1开始游戏。2退出");
            System.out.print("请输入0-2选项");
            Scanner scanner = new Scanner(System.in);
            while (!scanner.hasNextInt()) {
                scanner.nextLine();
            }
            switch (scanner.nextInt()) {
                case 0:
                    setmenu();
                    break;
                case 1:
                    start();
                    break;
                case 2:
                    System.out.println("退出成功");
                    return;
                default:
                    System.out.print("您的输入有问题");
                    throw new RuntimeException("menu选择出现问题");
            }
        }

    }

    public void setmenu() {
        Scanner scanner = new Scanner(System.in);
        System.out.printf("0设置开始值,当前开始值%d%n", this.from);
        System.out.printf("1设置游戏等级,当前游戏等级值%d%n", this.state);
        System.out.printf("2设置等级差距,当前游戏等级差距%d%n", this.add);
        System.out.printf("3设置次数,当前游戏次数%d%n", this.fre);
        System.out.printf("其它任意整数退出%n");
        if (scanner.hasNextInt()) {
            switch (scanner.nextInt()) {
                case 0:
                    System.out.print("请输入任意开始值");
                    if (scanner.hasNextInt()) {
                        setFrom(scanner.nextInt());
                    }
                    break;
                case 1:
                    System.out.print("请输入游戏等级游戏等级至少为1");
                    if (scanner.hasNextInt()) {
                        setState(scanner.nextInt());
                    }
                    break;
                case 2:
                    System.out.print("请输入等级差距,差距最小为100");
                    if (scanner.hasNextInt()) {
                        setAdd(scanner.nextInt());
                    }
                    break;
                case 3:
                    System.out.print("请输入游戏次数,最多10次,最少5次");
                    if (scanner.hasNextInt()) {
                        setFre(scanner.nextInt());
                    }
                    break;
                default:
                    break;
            }
        }

    }

    public void start() {
        int num = (int) (Math.random() * (state * add + 1)) + from;
//        String min = String.valueOf(from);
//        String max = String.valueOf(from+state*add);
        GameVal gameVal = new GameVal();
        gameVal.max = from+state*add;
        gameVal.min = from;
        for (int i = fre; i > 0; ) {
            System.out.printf("您还有%d次机会,下次建议输出范围%d-%d%n", i--,gameVal.min,gameVal.max);
            if (isNum(num,gameVal)) {
                break;
            }
        }
        end();
    }
    //调用的方法怎么回调
    //Integer String 是不行的
    //就是把min,max也修改了。传递参数 不能是Inter, String 基本数据类型
    //暂时通过参数不能用一种和是类型
    //我创建了一种新的类型 GameVal
    //面向对象思想--类型不够,直接创建。
    public boolean isNum(int num,GameVal gameVal) {
        System.out.printf("请输入一个%d-%d的整数", from, state * add + from);
        Scanner in = new Scanner(System.in);
        if (in.hasNextInt()) {
            int temp = in.nextInt();
            if (temp == num) {
                System.out.println("恭喜你,输入成功");
                return true;
            } else {
                if (num > temp) {
                    if(temp++>gameVal.min){
                        gameVal.min = temp;
                    }
                    System.out.printf("您输入的数太小了,");
                } else {
                    if(gameVal.max>temp--){
                        gameVal.max = temp;
                    }
                    System.out.printf("您输入的数太大了,");
                }
            }
        } else {
            in.nextLine();
            System.out.println("请输入一个整数");
        }
        return false;
    }

    public void end() {
        System.out.println("游戏结束");
        System.out.print("输入0退出");
        Scanner s = new Scanner(System.in);
        if (s.nextInt() != 0) {
            start();
        }

    }

    public void setFrom(int from) {
        this.from = from;
    }

    public void setState(int state) {
        if (state >= 1) {
            this.state = state;
        }
    }

    public void setAdd(int add) {
        if (add >= 100) {
            this.add = add;
        }
    }

    public void setFre(int fre) {
        if (fre >= 10) {
            this.fre = fre;
        }
    }
}

GameVal.java(为了改变值,然后设计了这个类)

public class GameVal {
    int min;
    int max;
}

Test.java(测试类)

public class Test {

         public static void main(String[] args){

                Game game = new Game();

                  game.menu();

        }

 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漫漫程序鹿

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值