欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java实现的猜数字游戏示例

程序员文章站 2024-02-13 23:39:16
本文实例讲述了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数据结构与算法教程》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总

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