首页 > 编程 > Java > 正文

Java实现的猜数字游戏示例

2019-11-26 09:52:31
字体:
来源:转载
供稿:网友

本文实例讲述了Java实现的猜数字游戏。分享给大家供大家参考,具体如下:

这里演示一段java语言猜数字代码,流程如下:

  • 系统随机生成0-9中的不重复四位数字。
  • 然后用户输入四个数字
  • 如果数字对了,位置不对 则显示 nB,n是有几个是位置对的。
  • 如果数字对了,位置也是对的 则显示mA,m代表有几个数字是正确位置上的。

例如:  生成的是0369    用户输入的是0396 则显示2A2B,两个位置是正确并且数字正确的,另外两个是数字正确,位置不正确的。

Java代码:

package com.example.test;import java.util.Random;import java.util.Scanner;public class NumberCode {  int[] Nums = new int[4];  int[] inputNumsArray = new int[4];  int difficultyLevel;  int difficulty;  int aA = 0;  int bB = 0;  String numberStr = "";  String str = "";  /**   * 生成随机数   */  public int[] randNums(int n) {    for (int i = 0; i < Nums.length; i++) {      Random ran = new Random();      int a = ran.nextInt(10);      if (i - 1 != -1) {        for (int j = 0; j < i; j++) {          if (a == Nums[j]) {            i--;            break;          } else {            Nums[i] = a;          }        }      } else {        Nums[i] = a;      }    }    return Nums;  }  /**   * 选择游戏难度    */  public int selectLevel() {    // 接受一个数字    // 1:Easy 可以猜12次    // 2:Common 可以猜9次    // 3:Hard 可以猜7次    @SuppressWarnings("resource")    Scanner scan = new Scanner(System.in);    System.out        .println("请选择难度系数(输入数字),1:Easy 可以猜12次;2:Common 可以猜9次;3:Hard 可以猜7次");    difficulty = scan.nextInt();    switch (difficulty) {    case 1:      difficultyLevel = 12;      break;    case 2:      difficultyLevel = 9;      break;    case 3:      difficultyLevel = 7;      break;    default:      break;    }    return difficultyLevel;  }  /**   * 接受用户输入的数字   */  public int[] inputNums(int n) {    @SuppressWarnings("resource")    Scanner scan = new Scanner(System.in);    int b = scan.nextInt();    for (int i = 0; i < inputNumsArray.length; i++) {      int c = (int) ((int) b / Math.pow(10, 3 - i));      inputNumsArray[i] = c;      b = (int) (b - c * Math.pow(10, (3 - i)));    }    return inputNumsArray;  }  /**   * 数字比对的方法   */  public String compare(int[] answer, int[] inputs) {    for (int i = 0; i < answer.length; i++) {      if (inputs[i] == answer[i]) {        aA += 1;        continue;      } else {        for (int j = 0; j < answer.length; j++) {          if (inputs[i] == answer[j]) {            bB += 1;          }        }      }    }    str = "" + aA + "A " + bB + "B ";    return str;  }  /**   * 整个游戏过程代码    */  public void play() {    randNums(4);    for (int i = 0; i < Nums.length; i++) {      numberStr = numberStr + Nums[i];    }    selectLevel();    System.out.println("你选择了难度系数:" + difficulty + " 共有:" + difficultyLevel        + "次机会。");    for (int i = 0; i < difficultyLevel; i++) {      inputNums(4);      int chanceNums = difficultyLevel - i - 1;      compare(Nums, inputNumsArray);      if (aA != 4) {        if (chanceNums == 0) {          System.out.println("机会用完了,答案是:" + numberStr);          break;        } else {          System.out.println(str + " 你还有" + chanceNums + "次机会");        }        aA = 0;        bB = 0;      } else if (aA == 4) {        System.out.println("恭喜你,答对了");        break;      }    }  }  public static void main(String[] args) {    NumberCode a = new NumberCode();    a.play();  }}

运行结果:

请选择难度系数(输入数字),1:Easy 可以猜12次;2:Common 可以猜9次;3:Hard 可以猜7次
1
你选择了难度系数:1 共有:12次机会。
0123
0A 2B  你还有11次机会
2345
2A 0B  你还有10次机会
5678
2A 0B  你还有9次机会
7890
0A 2B  你还有8次机会
2378
恭喜你,答对了

运行效果如下图:

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数学运算技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表