首页 > 其他分享 >20230729 猜数字(摸鱼的产物)

20230729 猜数字(摸鱼的产物)

时间:2023-07-29 14:57:15浏览次数:33  
标签:std digit cout int 20230729 摸鱼 input seed 产物

#include <iostream>
#include <random>
#include <Windows.h>

int digit = 4;

int main() {

    //随机数
    std::default_random_engine seed;
    std::uniform_int_distribution<int> random(0, 9);//0-9闭区间的随机数
    seed.seed(time(nullptr));

    //猜数字
    while (true) {

        //输入位数
        while (true) {
            std::cout << "How many digits would you like to guess?" << std::endl
                      << "Please enter a number greater than 0 and less than 1000." << std::endl;
            std::cin >> digit;
            if (digit >= 0 && digit <= 5) {
                break;
            } else if (digit >= 0 && digit <= 1000) {
                std::cout << "Are you sure?" << std::endl
                          << "If you are sure, enter 1, otherwise enter 0." << std::endl;
                std::string sure;
                std::cin >> sure;
                if (sure == "1") {
                    break;
                }
            } else {
                std::cout << "Input error, please re-enter." << std::endl;
            }
        }
        system("cls");

        std::cout << "If you want to quit the game, type -1." << std::endl
                  << "If you want to regenerate, enter -2." << std::endl;

        bool visNum[10] = {false, false, false, false, false, false, false, false, false, false};

        //生成digit位随机数
        int randomNum[1005] = {0};
        for (int i = 0; i < digit; i++) {
            randomNum[i] = random(seed);
            visNum[randomNum[i]] = true;
        }

        bool finish = false;

        //猜数字
        while (true) {
            std::string input;
            std::cin >> input;
            if (input == "-1") {
                goto GAME_OVER;
            } else if (input == "-2") {
                break;
            } else if (input.length() != digit) {
                std::cout << "Your input is wrong, please re-enter." << std::endl;
            } else {
                int guessNum[1005] = {0};
                for (int i = 0; i < digit; i++) {
                    guessNum[i] = input[i] - '0';
                }
                int hasNumCnt = 0;
                int rightNumCnt = 0;
                for (int i = 0; i < digit; i++) {
                    if (visNum[guessNum[i]]) {
                        if (guessNum[i] == randomNum[i]) {
                            rightNumCnt += 1;
                        } else {
                            hasNumCnt += 1;
                        }
                    }
                }
                if (rightNumCnt == digit) {
                    finish = true;
                    break;
                } else {
                    std::cout << "The number of correct numbers but incorrect positions is " << hasNumCnt << " ."
                              << std::endl;
                    std::cout << "The exact number is " << rightNumCnt << " ." << std::endl;
                }
            }
        }
        if (finish) {
            std::cout << "Congratulations, you got it right!" << std::endl;
            //按下空格键退出
            std::cout << "Press Space to continue the game." << std::endl;
            while (!(GetAsyncKeyState(32) & 0x8000)) {}
        }
        system("cls");
    }
    GAME_OVER:
    return 0;
}

标签:std,digit,cout,int,20230729,摸鱼,input,seed,产物
From: https://www.cnblogs.com/Eutopiax7/p/17589804.html

相关文章

  • 20230729
    复赛混合背包这道题用到了01背包、多重背包和完全背包,是一道背包问题的模板题。核心代码就是三个背包的写法01背包:for(intj=v;j>=w;j--){//每个物品只有拿或不拿两种状态,且只受到上一层(上一个物品)的前面价值的影响,而不受到这一层前面和后面的影响,所以从后向前遍历......
  • CPU摸鱼被抓,上了一个新技术!
    我叫阿Q,是CPU一号车间里的员工,我所在的这个CPU足足有8个核,就有8个车间,干起活来杠杠滴。我们CPU的任务就是执行程序员编写的程序,只不过程序员编写的是高级语言代码,而我们执行的是这些代码被编译器编译之后的机器指令。 那一天,我正在忙活着···“阿Q,工作时间你怎么在摸鱼啊!......
  • 上班摸鱼刷算法-Java-hot100-[160]相交链表
    publicclassSolution{publicListNodegetIntersectionNode(ListNodeheadA,ListNodeheadB){if(headA==null||headB==null){returnnull;}ListNodepA=headA;ListNodepB=headB;while(pA......
  • 上班摸鱼刷算法-Java-hot100-[21]合并两个有序链表
    //将一个链表插入到另一个链表中classSolution{publicListNodemergeTwoLists(ListNodelist1,ListNodelist2){if(list1==null){returnlist2;}if(list2==null){returnlist1;}retur......
  • [7月摸鱼计划] 困惑
    最近在参与中科昊芯的HX2000start-DSC28034PNT_V1.0开源活动,遇到一些困扰,首先开发手册是湖人版的,视频是027系列的,通过主办平台得到了原理图,发现官网例程引脚编号对不上,都要改,没有直接可用的例程,IDE方面须运行escipe环境下的Mingw会减少两个报错,但还有2个报错,还在摸索,希望有HX2000......
  • [7月摸鱼计划] Secure Connection测试
    SecureConnection是指建立在安全协议上的连接,用于保护数据在网络传输过程中的安全性。在互联网通信中,数据传输往往需要经过多个节点,如果不采取安全措施,数据可能会被窃取、篡改或伪造。SecureConnection通过使用加密技术和身份验证机制,确保数据在传输过程中的机密性、完整性和可信......
  • [7月摸鱼计划] 拉电流和灌电流
    拉电流和灌电流是电子工程中常用的两个概念,用来描述电流的流动方向和方式。1. 拉电流(Source Current):指电流从电源或信号源流向负载或电路的过程。在电路中,电源或信号源提供电流,通过电路元件(如电阻、电容、电感等)流向负载或其他电路部分。拉电流的方向是从电源或信号源指向负载或......
  • [7月摸鱼计划] MCU避免灌电流
    如果MCU不供电,即没有电源连接到MCU芯片上,那么MCU的所有IO口应该是处于高阻态,不会有电压输出。在这种情况下,IO口不会产生灌电流。然而,需要注意的是,如果MCU的IO口与其他电路连接,而其他电路上存在电源或信号源,那么这些电路可能会通过IO口引脚对MCU芯片施加电压。这种情况下,IO口可能会......
  • [7月摸鱼计划] PCB地平面设计
    在PCB设计中,将所有的GND(地)连接在一起是一种常见的做法,被称为地平面。这样做的目的是为了提供良好的地引用,减少信号回流路径的阻抗,降低电磁干扰和噪声。连接所有的GND可以形成一个低阻抗的回流路径,确保信号和电源的地引用是一致的。这对于保持信号完整性、减少串扰和提高系统性能非......
  • 7月摸鱼计划全新升级啦!任选7/14/21天发博文吧~
    下半年,我们的摸鱼计划系列活动,全新升级啦~不需要留言报名!不需要等待统一领奖时间!7月摸鱼计划,将以【博主任务】形式,让大家自发选择更文任务!任务达标后即刻兑奖!且任务间的奖品可同享!【活动时间】发文时间:2023年7月1日—2023年7月31日【活动任务】以下任务福利可同享!!任务一:7天更文任务......