使用js开发一个猜数字的小游戏

185 阅读2分钟

使用js开发一个猜数字的小游戏,其中有四个数字,四个数字的位置在开始游戏的时候是固定的。在开始游戏的时候,玩家可以输入十次 四个数字。在提交确认之后,如果数字的位置与值都正确,则归类1A,如果数字正确 但是位置不正确,则归类1B。然后看看有多少个1A,1B,最终加起来。示例:现有数字 1、2、3、4,这是正确的数字,如果玩家输入了 1、3、2、4,那么最终将会显示2A2B。如果玩家输入了 0、2、3、4,那么将会显示3A0B。

以下是一个简单的基于控制台的猜数字小游戏的实现,代码注释已经说明了详细步骤和实现方法:

// 定义正确的数字序列
const secretNumber = [1, 2, 3, 4];

// 获取用户输入数字序列的函数
function getUserInput() {
  // 从控制台获取用户输入,并根据空格拆分成数字数组
  const inputNums = prompt('请输入四个数字,用空格键分隔:').split(' ');
  // 将输入数字序列转换为数字类型的数组
  return inputNums.map(num => parseInt(num));
}

// 比较两个数字序列,返回1A和1B数量的数组
function compareNumbers(num1, num2) {
  let A = 0, B = 0;
  for (let i = 0; i < num1.length; i++) {
    if (num1[i] === num2[i]) {
      // 数字和位置都正确,1A数量加1
      A++;
    } else if (num2.indexOf(num1[i]) !== -1) {
      // 数字正确,但位置不正确,1B数量加1
      B++;
    }
  }
  return [A, B];
}

// 主程序入口
function main() {
  // 初始化A和B的数量为0
  let A = 0, B = 0;
  // 循环10次,获取用户输入并进行比较
  for (let i = 1; i <= 10; i++) {
    console.log('第' + i + '次猜测:');
    // 获取用户输入的数字序列
    const inputNums = getUserInput();
    // 比较输入的数字序列和正确的数字序列,得出1A和1B的数量
    const [a, b] = compareNumbers(inputNums, secretNumber);
    // 显示1A和1B的数量
    console.log(a + 'A' + b + 'B');
    // 更新A和B的数量
    A += a;
    B += b;
    // 如果全部数字的位置和值都正确,则游戏胜利,结束游戏
    if (a === 4) {
      console.log('恭喜你猜对了!答案是' + secretNumber.join(''));
      return;
    }
  }
  // 10次猜测都结束后,显示最终结果
  console.log('很遗憾,你没有在规定的次数内猜中答案');
  console.log('最终结果:' + A + 'A' + B + 'B');
}

// 调用主程序入口
main();

上述代码是一个比较简单的实现,对用户的输入没有进行特别严格的校验,实际开发中,还需要考虑输入非法字符、超时等异常情况的处理。