C语言复习之猜数小游戏
Posted 你是小KS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言复习之猜数小游戏相关的知识,希望对你有一定的参考价值。
1.声明
当前内容主要为本人复习C语言之用,涉及到一个小的猜数小游戏的demo
主要涉及
- 伪随机数的产生
- 结构体传递
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语言复习之猜数小游戏的主要内容,如果未能解决你的问题,请参考以下文章