给大家分享一下一个有意思的游戏:猜数字游戏。
一.简单介绍游戏
先简单介绍一下这个游戏的规则:比如在1~100的数字内,随便挑选一个数字为“炸弹”,玩家轮流说出自己所猜想的数字,不断的缩小猜数字的范围,直到玩家说出带有“炸弹”数字,即视为游戏结束。
二.游戏内容实现
1.游戏的全貌(游戏的外皮)
为了更好的去实现这个游戏,这里需要使用srand()来生成随机数,但srand()生成随机数需要一个“种子”,这个“种子”是需要时刻变化的。这时大家可能会有疑问:“我都要随机数了?又需要一个时刻变化的种子?”这时,time函数就起到至为关键的作用了,time函数可以获取当前的系统时间,返回的结果是一个time_t类型,实际也就是一个大整数,而这个整数是随着时间变化的。由此,就成功生成随机数了!
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//执行随机数的生成
//这里time()的返回值形式的time_t,而srand需要的形式是unsigned int,所以这里强制转换一下
do
{
menu();//调用目录函数,用来提示玩家选择
printf("请选择功能:");
scanf("%d", &input);
switch (input)
{
case 1:
game();//这里调用game()函数,进行游戏内部的实现
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误,请重新输入:\n");
break;
}
} while (input);
return 0;
}
2.游戏功能的实现(游戏的内脏)
这里就是实现游戏功能的地方了,其实最主要就是要清楚生成的随机数的范围(控制在1~100)。想玩大的可以自己调。
目录函数
void menu()
{
printf("*********************\n");
printf("*** 1.玩游戏 ***\n");
printf("*** 0.不玩了 ***\n");
printf("*********************\n");
}
游戏函数
void game()
{
int Guessnum = 0;
int ret = rand() % 100 + 1;//这里由于生成的随机数范围在0~32767(在有些编译器上这个RAND_MAX可能不一样,但大部分编译器是相同的)所以要%100+1
int lim = 5;
while (lim)
{
printf("你现在还有%d次机会\n", lim);
printf("请输入要猜测的数字:\n");
scanf("%d", &Guessnum);
if (Guessnum < ret)
{
printf("猜小了\n");
}
else if (Guessnum > ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜,猜对了,数字是%d\n", ret);
break;
}
lim--;
}
if (lim == 0)
{
printf("抱歉,机会用完了,你输了,正确值是%d\n",ret);
}
}
3.头文件的添加(游戏的头颅)
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
stdio.h就不必多说了吧,输入输出的必要头文件。
time.h是time()的头文件。
stdlib 是srand()的头文件。
三.游戏的整体代码
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void game()
{
int Guessnum = 0;
int ret = rand() % 100 + 1;//这里由于生成的随机数范围在0~32767(在有些编译器上这个RAND_MAX可能不一样,但大部分编译器是相同的)所以要%100+1
int lim = 5;
while (lim)
{
printf("你现在还有%d次机会\n", lim);
printf("请输入要猜测的数字:\n");
scanf("%d", &Guessnum);
if (Guessnum < ret)
{
printf("猜小了\n");
}
else if (Guessnum > ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜,猜对了,数字是%d\n", ret);
break;
}
lim--;
}
if (lim == 0)
{
printf("抱歉,机会用完了,你输了,正确值是%d\n",ret);
}
}
void menu()
{
printf("*********************\n");
printf("*** 1.玩游戏 ***\n");
printf("*** 0.不玩了 ***\n");
printf("*********************\n");
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//执行随机数的生成
//这里time()的返回值形式的time_t,而srand需要的形式是unsigned int,所以这里强制转换一下
do
{
menu();//调用目录函数,用来提示玩家选择
printf("请选择功能:");
scanf("%d", &input);
switch (input)
{
case 1:
game();//这里调用game()函数,进行游戏的实现
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误,请重新输入:\n");
break;
}
} while (input);
return 0;
}
最后,感谢大家的驻留观看。希望大家在新的一年里节节攀升,永远开心,欧耶~~