C语言复习之猜数小游戏

1.声明

当前内容主要为本人复习C语言之用,涉及到一个小的猜数小游戏的demo

主要涉及

  1. 伪随机数的产生
  2. 结构体传递

2.demo

#include 
#include 
#include 

/*
猜数字游戏完成
2021/05/01
*/
typedef struct
{
     
    int level;
    char *levelPrompt;
    int levelCanInputNum;
} GameLevel; // 定义一个游戏等级的结构

typedef struct {
     
    int guessNum;
    int (*getRandom)(int);
    int userCount;
    int **inputRecord;
    GameLevel glevel;
} GuessGame; // 定义一个猜数的结构

// 主要获取当前产生的随机数,用于猜数,按照级别来生成
int getRandom(int level){
     
    srand(time(NULL));
    int weed=0;
    switch(level)
    {
     
        case 1:
            weed=9;
            break;
        case 2:
            weed=99;
            break;
        case 3:
            weed=999;
            break;
        default:
            weed=9;
            break;
    }
    int guessNum=1+rand()%weed;
    return guessNum;
}

// 通过级别方式获取游戏级别的结构
GameLevel getGameLevel(int level){
     
    GameLevel glevel;
    glevel.level=level;
    switch(level)
    {
     
        case 1:
            glevel.levelPrompt="1到10";
            glevel.levelCanInputNum=3;
            break;
        case 2:
            glevel.levelPrompt="1到100";
            glevel.levelCanInputNum=5;
            break;
        case 3:
            glevel.levelPrompt="1到1000";
            glevel.levelCanInputNum=10;
            break;
        default:
            glevel.levelPrompt="1到10";
            glevel.levelCanInputNum=3;
            break;
    }
    return glevel;
}

void printInputRecord(int userCount,int *inputNums){
     
    if(userCount==1)
    {
     
        puts("一次就正确");
    }else
    {
     
        puts("当前输入的内容如下");
        puts("******************");
        for(int i=0;i<userCount;i++)
        {
     
            printf("第%d次,输入为:%d\n",(i+1),inputNums[i]);
        }
        puts("******************");
    }
}

int promptCurrentResult(int inputNum,int guessNum){
     
    int isSuccess=0;
    if(guessNum==inputNum)
    {
     
        puts("猜对了");
        isSuccess=1;
    }else if(inputNum>guessNum){
     
        puts("再小点");
    }else
    {
     
        puts("再大点");
    }
    return isSuccess;
}

int main()
{
     
    int guessNum,inputNum;
    int userCount=0;
    int totalInputNum;
    puts("请输入猜字游戏级别:");
    int level=1;
    scanf("%d",&level);
    guessNum=getRandom(level);
    GameLevel glevel=getGameLevel(level);
    totalInputNum=glevel.levelCanInputNum;
    int inputNums[totalInputNum];
    while(1)
    {
     
        printf("请输入猜的数字(%s),还有%d次机会\n",glevel.levelPrompt,(totalInputNum-userCount));
        scanf("%d",&inputNum);
        // record current input number
        inputNums[userCount++]=inputNum;
        if(promptCurrentResult(inputNum, guessNum)){
     
            break;
        }
        if(userCount>=totalInputNum)
        {
     
            printf("%d次机会用完,答案是:%d\n",totalInputNum,guessNum);
            break;
        }

    }

    printInputRecord(userCount, inputNums);

    return 0;
}

3.测试

C语言复习之猜数小游戏_第1张图片

测试成功!

你可能感兴趣的:(C)