栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

新手上路1,Java基本涉及类之前的语法案例 //猜数字游戏

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

新手上路1,Java基本涉及类之前的语法案例 //猜数字游戏

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 前言
  • 一、关于这个案例的突发奇想
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据以及数据处理
  • 总结


前言

Java刚刚学完数组,突发奇想记录一下自己的学习过程于是有了这个系列


以下是本篇文章正文内容,下面案例可供参考(屎山代码,哈哈哈有bug请多包涵)

一、关于这个案例的突发奇想

学了死循环,不久,又稍微学了下数组手有点欠,刚好老师讲了一个猜数字游戏于是就想稍微完善下,全篇没什么技巧,全是感情(qaq)

二、使用步骤 1.引入库

代码如下(示例):

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

2.读入数据以及数据处理

代码如下(示例):

public class ArrCaiShuZi {
    public static void main(String[] args) {
        //游戏规则如下 后台随机生成1-20 中的五个数 初始给出四次猜测的机会 每对一次机会增加2次 有一次提示最近的数字与之前一个你猜测的数字距离的机会
        //未猜中提示“未猜中,请继续努力” 猜中提示“你离成功又近了一步”  次数用完未猜中 提示"游戏失败",次数用完前猜中提示“你真厉害”
        Random r = new Random();
        Scanner sc = new Scanner(System.in);
        int[] x = new int[5];
        int[] xed = new int[5];
        int flag = 0;//0为提示未使用 flag变为一代表使用一次提示功能
        int count = 0;//已使用次数
        int chance = 4;//可使用次数
        int juli = 0;//提示中需要使用的距离
        int input = 0;//输入的数
        int leftNumber = 0;//上一个输入的数
        int p = 0;   //记录猜对的个数
        int flag2 = 0;//五个flag2代表你猜的数真的不在这五个数里的任何一个数
        for (int i = 0; i < 5; i++) {             //产生随机数组
            x[i] = r.nextInt(1,21);
            for (int j = 0; j < 5; j++) { //防止重复
                if (i == j) {
                    continue;
                }
                if (x[i] == x[j]) {
                    x[i] = r.nextInt();
                    i -= 1;
                }
            }
        }
        System.out.println("游戏开始");
        while (true) {
            leftNumber = input;
            int flag1 = 0;   //检测使用提示前输入的数字是是正确答案
            count++;
            if (count > chance) {
                System.out.println("游戏失败");
                break;
            }
            if (flag == 0) {
                System.out.println("请输入一个整数并回车进行猜测");
                System.out.println("或输入520回车使用一次提示机会");
                input = sc.nextInt();
                if ( input != 520 & input > 20 || input < 1)                  //判断是否超出范围
                {
                    System.out.println("输入的数超出范围,请重新输入");
                    continue;
                }
                for (int i = 0; i < 5; i++) {
                    if (input == x[i]) {
                        for (int k = 0; k < 5; k++) {
                            if (i == xed[k] + 10){
                                flag2 = 1;
                            }
                        }
                        if (flag2 == 1) {                             //如果这个数已经被猜到
                            System.out.println("该数已经被猜出来啦");
                            count -= 1;
                            flag2 = 0;
                            break;
                        }
                        System.out.println("你离成功又近了一步");         //猜测正确
                        xed[p] = i - 10;
                        p++;
                        chance += 2;
                        break;
                    } else if(input == 520){                            //这个循环是提示功能的实现
                        if (count < 2) {                                //防止leftMumber为空出现bug
                            System.out.println("请在至少第二次猜测后使用提示");
                            count -= 1;
                            break;
                        }
                        juli = x[0] - leftNumber;
                        for (int j = 0; j < 5; j++) {                   //计算距离
                            if (juli > Math.abs(x[j] - leftNumber)) {
                                juli = Math.abs(x[j] - leftNumber);
                            }
                        }
                        flag += 1;
                        if (juli == 0) {
                            System.out.println("请在猜错的时候使用");
                            flag -=1;
                            break;
                        }
                        System.out.println("离上一个数最近的数距离为" + juli);
                        count -= 1;
                        break;
                    }else {
                        flag1++;
                        if (flag1 == 5) {
                            System.out.println("未猜中,请继续努力");
                            break;
                        }
                    }
                }
            }else {
                System.out.println("请输入一个整数并回车进行猜测");
                input = sc.nextInt();
                if ( input != 520 & input > 20 || input < 1)                  //判断是否超出范围
                {
                    System.out.println("输入的数超出范围,请重新输入");
                    continue;
                }

                for (int i = 0; i < 5; i++) {
                    if (input == x[i]) {
                        for (int k = 0; k < 5; k++) {
                            if (i == xed[k] + 10){
                                flag2 = 1;
                            }
                        }
                        if (flag2 == 1) {                             //如果这个数已经被猜到
                            System.out.println("该数已经被猜出来啦");
                            count -= 1;
                            flag2 = 0;
                            break;
                        }
                        System.out.println("你离成功又近了一步");         //猜测正确
                        xed[p] = i - 10;
                        p++;
                        chance += 2;
                        break;
                    } else if(input == 520){                            //这个循环是判断提示是否被使用
                            System.out.println("已经没有提示的次数了");
                            count -= 1;
                            break;
                        } else {
                        flag1++;
                        if (flag1 == 5) {
                            System.out.println("未猜中,请继续努力");
                            break;
                        }
                    }
                }
            }
            if (p == 5) {          //胜利条件
                System.out.println("游戏结束你真棒");
                break;
            }
        }
    }
}


总结

是关于数组访问和死循环的一个还行的学习案例,虽然我做得稀烂的,哈哈哈哈
就这样吧,下次再见

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987814.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号