📜  猜谜游戏 3 数字 c++ (1)

📅  最后修改于: 2023-12-03 15:11:11.475000             🧑  作者: Mango

猜谜游戏 3 数字

这是一个猜数字的游戏,游戏生成一个 3 位数,并提示用户每位数字是否正确。用户可以根据提示再次猜测,直到猜中为止。

游戏规则
  1. 游戏要求用户猜出一个 3 位数,数字范围为 0~9。
  2. 如果用户猜测正确,游戏结束,输出胜利信息。
  3. 如果用户猜测错误,游戏会给出每位数字是否正确的提示。
  4. 用户可以根据提示再次猜测,直到猜中为止。
实现步骤
  1. 定义一个函数 generateRandomNumber() 用于生成一个 3 位的随机数字。
  2. 定义一个函数 checkGuess(int guess, int answer) 用于检查用户猜测是否正确,并给出每位数字是否正确的提示。
  3. 在主函数中,调用 generateRandomNumber() 生成一个随机数字并存储在变量 answer 中。
  4. 使用一个循环来接收用户猜测的数字,并调用 checkGuess() 进行校验,直到用户猜中为止。
代码实现
#include <iostream>
#include <ctime>

using namespace std;

// 生成随机数
int generateRandomNumber() {
    srand((unsigned) time(NULL)); // 随机数种子
    int num = rand() % 900 + 100; // 生成 100~999 的随机数
    return num;
}

// 检查猜测结果是否正确
bool checkGuess(int guess, int answer) {
    int ansDigit[3]; // 存储正确答案每位上的数字
    int guessDigit[3]; // 存储用户猜测的数字每位上的数字
    int A = 0, B = 0; // 存储数字和位置都正确/数字正确但位置不正确的个数
    for (int i = 0; i < 3; i++) {
        ansDigit[i] = answer % 10;
        answer = answer / 10;
        guessDigit[i] = guess % 10;
        guess = guess / 10;
        if (guessDigit[i] == ansDigit[i]) {
            A++;
        }
        else {
            for (int j = 0; j < 3; j++) {
                if (guessDigit[i] == ansDigit[j]) {
                    B++;
                    break;
                }
            }
        }
    }
    cout << "结果:" << A << "A" << B << "B" << endl;
    return (A == 3);
}

int main() {
    int answer = generateRandomNumber(); // 生成随机数字
    cout << "欢迎来到猜数字游戏,请输入一个 3 位数:" << endl;
    int guess;
    do {
        cin >> guess;
    } while (!checkGuess(guess, answer));
    cout << "恭喜你猜中了!" << endl;

    return 0;
}

以上就是猜谜游戏 3 数字的具体实现方式。