首页 > 编程语言 >C++ 猜数字

C++ 猜数字

时间:2023-02-17 17:12:23浏览次数:41  
标签:std guess 数字 int random C++ rd cout

#include <iostream>
#include <random>
#include <limits>

namespace random
{
    std::random_device rd;
    std::seed_seq rr = {rd(), rd(), rd(), rd(), rd(), rd(), rd(), rd()};
    std::mt19937 mt{rr};

    int get(int min, int max)
    {
        std::uniform_int_distribution uid{min, max};
        return uid(mt);
    }

} // namespace random

int getGuess(int i)
{
    while (true)
    {
        std::cout << "Guess #" << i << ":";
        int guess{};
        std::cin >> guess;
        if (!std::cin || guess < 1 || guess > 100)
        {
            std::cin.clear();
            std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
            std::cout << "Please enter the correct number!" << '\n';
            continue;
        }

        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        return guess;
    }
}

bool playGame(int guesses, int random)
{
    std::cout << "Let's play a game. I'm thinking of a number between 1 and 100. You have " << guesses << " tries to guess what it is. " << '\n';
    for (int i{1}; i <= guesses; i++)
    {

        int guess{getGuess(i)};

        if (random > guess)
            std::cout << "Your guess is too low." << '\n';
        else if (random < guess)
            std::cout << "Your guess is too high." << '\n';
        else // random == guess
            return true;
    }
    return false;
}

bool playAgain()
{
    while (true)
    {
        std::cout << "Would you like to play again (y/n)? ";
        char ch{};
        std::cin >> ch;

        switch (ch)
        {
        case 'y':
            return true;
        case 'n':
            return false;
        default:
            std::cout << "Please enter the correct option!" << '\n';
            std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        }
    }
}

int main()
{
    do
    {
        constexpr int guesses{7};
        int num{random::get(1, 100)};

        bool won{playGame(guesses, num)};
        if (won)
        {
            std::cout << "Correct! You win!" << '\n';
        }
        else
        {
            std::cout << "Sorry, you lose. The correct number was " << num << "\n";
        }

    } while (playAgain());

    return 0;
}

标签:std,guess,数字,int,random,C++,rd,cout
From: https://www.cnblogs.com/leafz/p/17130850.html

相关文章

  • 华为数字能源将亮相MWC:迎接智能化,助力运营商加速低碳化
    「作为每年全球最大的通信展,MWC2023将于2月28日在巴萨罗纳举行。在整个世界正在加速迈向智能化的今天,MWC上又会有哪些新故事呢?」今年大会的主题是“速度”(Velocity),它将贯......
  • 华为数字能源将亮相MWC:迎接智能化,助力运营商加速低碳化
    「作为每年全球最大的通信展,MWC2023将于2月28日在巴萨罗纳举行。在整个世界正在加速迈向智能化的今天,MWC上又会有哪些新故事呢?」 今年大会的主题是“速度”(Velocity),它......
  • js - 数字转中文
    js-数字转中文JavaScript中将阿拉伯数字转换为中文转换代码var_change={ary0:['零','一','二','三','四','五','六','七','八','九'],ary1:['',......
  • C++中的静态成员
    在一个类的定义中,关键字static声明一个不属于类实例的成员。一些细节如果类定义中某个成员的声明说明符包含关键字static,那么它就是类的静态成员。静态成员的名称不能......
  • C++继承--公有继承
    C++继承--公有继承#include<iostream>#include<cstdio>usingnamespacestd;classStudent{//基类public:voidget_value();voiddisplay();private:intnu......
  • c++继承---私有继承
    私有继承   在声明一个派生类的时候将基类的继承方式指定为private的,称为私有继承,用私有继承方式建立的派生类称为私有派生类,其基类称为私有基类.私有继承中的......
  • C++打印8、10、16进制数字的几种方式
    1#include<iostream>2#include<bitset>///c++中控制进制的头文件3#include<stdlib.h>///c中的函数库4#include<bits/stdc++.h>///万能头文件,如果选用此头......
  • c++时间戳格式化
    使用chrono获取当前系统时间,使用std::put_time将时间标准化时间戳格式化为指定的字符串#include<chrono>#include<iostream>#include<iomanip>#include<ctime>......
  • c++ 获取代码执行时间
    点击查看代码,可修改milli配置输出时间级别,当前毫秒级autobegin=std::chrono::steady_clock::now();fun();autoend=std::chrono::steady_clock::now......
  • c++获取当前时间chrono
    点击查看代码longlongget_cur_time(){//获取操作系统当前时间点(精确到微秒)chrono::time_point<chrono::system_clock,chrono::microseconds>tpMicro......