当前位置: 移动技术网 > IT编程>开发语言>Java > Java实现的猜数字游戏示例

Java实现的猜数字游戏示例

2019年07月19日  | 移动技术网IT编程  | 我要评论
本文实例讲述了java实现的猜数字游戏。分享给大家供大家参考,具体如下: 这里演示一段java语言猜数字代码,流程如下: 系统随机生成0-9中的不重复四位数字。

本文实例讲述了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程序设计有所帮助。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网