c语言猜数字游戏有点复杂

该游戏可以由程序随机产生一个N位数字,或由用户输入一个N位数字,作为待猜测数字(各位数字不重复出现)。玩游戏者开始猜测后,可以有M次机会输入数字来匹配上面的待猜测数字。用户每输入一次,系统给出本次猜测结果:A表示位置正确且数字正确,B表示数字正确而位置不正确。比如:2A1B,表示2位位置正确且数字正确,1位数字正确但是位置不正确。
某次猜中后,游戏结束。若M次机会用完,游戏也结束。菜单格式如图。

2.基本功能

1)产生待猜测数据,随机生成,或由用户输入。需要判断合法性:N位数字不重复出现。

2)提供最多M次机会猜测,每次反馈猜测结果。成功立即结束猜测返回主菜单。

3)游戏开始前输入用户名,初次使用进行用户注册。游戏成功与否都能返回主菜单。

4)查看结果:查看某一个用户的历史猜测结果,最少猜测次数,成功率;
5)参数M,N可以自由设置

3.拓展功能:

记录不同的游戏用户的猜测结果,设置猜测排行榜,设置游戏难度等等其它自定义拓展功能。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
    int ret = 0;
    int i = 0;
    int rnd = 0;
    int cnt=0;
    srand((unsigned int)time(NULL));
    ret = rand()%89999+10000;
    printf("Ganestart!\n");
    while(1)
    {
        printf("请输入一个数:");
        scanf("%d",&rnd);
        cnt++;
        if(rnd>ret){
            printf("太大了! \n");    
        }else if(rnd<ret){
            printf("太小了! \n");    
        }else{
            printf("炸弹爆炸,嘭! \n");    
            break;
        }
        
    }
    printf("共猜了%d次",cnt);
    return 0;
}

参考一下:https://blog.csdn.net/Lsxlsxls/article/details/80054382

如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <time.h>
void c_input(char *str)
{
    int i,j;
input:for(i=0;i<4;i++)
      {
          str[i]=getch();
          putchar(str[i]);
      }
      putchar('\n');
      for(i=0;i<4;i++)
      {
          if(str[i]<'0'||str[i]>'9')
          {
              printf("无效输入,请重新输入:");
              goto input;
          }
          for(j=0;j<i;j++)
          {
              if(str[i]==str[j])
              {
                  printf("无效输入,请重新输入:");
                  goto input;
              }
          }
      }
}
void c_game(const char *temp)
{
    int i,j,ci;
    char in[4];
    char out[5]="0A0B";
    for(ci=0;ci<8;ci++)
    {
        printf("第 %d 次输入:",ci+1);
        c_input(in);
        for(i=0;i<4;i++)
        {
            if(in[i]==temp[i])
            {
                out[0]++;
            }
            else
            {
                for(j=0;j<4;j++)
                {
                    if(in[i]==temp[j])
                    {
                        out[2]++;
                    }
                }
            }
        }
        printf("%s\n",out);
        if(strcmp(out,"4A0B")==0)
        {
            printf("游戏成功,按下任意键返回主菜单。。");
            getch();
            return;
        }
        out[0]='0';
        out[2]='0';
    }
    printf("游戏失败,按下任意键返回主菜单。。");
    getch();
}
void c_rand()
{
    int i,j;
    char data[]="0123456789";
    char temp[4];
    system("cls");
    printf("**随机模式**\n\n");
    for(i=0;i<4;i++)
    {
        j=rand()%(10-i);
        temp[i]=data[j];
        data[j]=data[10-i-1];
    }
    c_game(temp);
}
void c_printf()
{
    char temp[4];
    system("cls");
    printf("**用户输入模式**\n\n");
    printf("请输入测试数据:");
    c_input(temp);
    system("cls");
    printf("**用户输入模式**\n\n");
    c_game(temp);
}
void main()
{
    srand(time(NULL));
    while(1)
    {
        system("cls");
        printf("(1) 随机产生数据\n");
        printf("(2) 用户输入数据\n");
        printf("(3) 退出游戏\n");
        printf("choice : ");
        switch(getch())
        {
        case '1':c_rand();break;
        case '2':c_printf();break;
        case '3':exit(1);
        }
    }
}