C语言复习之猜数小游戏

Posted 你是小KS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言复习之猜数小游戏相关的知识,希望对你有一定的参考价值。

1.声明

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

主要涉及

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

2.demo

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

/*
猜数字游戏完成
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语言复习之猜数小游戏的主要内容,如果未能解决你的问题,请参考以下文章

java实验之猜数游戏

c语言猜数游戏编程

ios开发之猜数字游戏

C语言小恶搞之猜数字游戏

c语言写猜数游戏,就是那个几A几B的,但改成电脑猜数,就是电脑1抽数字,电脑2猜数字,求AI代码阿

c语言猜数游戏