欢迎收看今天的编程栏目,好男人就是我,我就是你们的菜鸡哥
今天我们来讲一个简单的小游戏,猜数字游戏。
那么首先我们要打印出来一个游戏面板吧,给予玩家选择的权利,我们不能强迫他们玩吧,如果可以这样的话,那我岂不是赚翻了。哈哈,玩笑话。
void sex()
{
printf("*********************\n");
printf("****** 1. play ******\n");
printf("****** 0. exit ******\n");
printf("*********************\n");
};
每次进来都要显示面板,那么我们可以用do~while循环进行。多种选择,那么将用到switch多分支选择语句。
int main()
{
int input = 0;
do
{
sex();
printf("请选择:\n");
scanf("%d",&input);
switch(input)
{
case:1
game();//选择1那么我们就进行玩游戏。
break;
case:0
printf("退出游戏.\n");
break;
default:
printf("输入错误,请重新输入.\n");
break;
}while(input)
return 0;
}
面板已经有了,那么接下来我们就应该写猜数字game()的代码了。那么我们是不是要电脑生成随机数呢,而且是一个我们知道的范围,不然范围太大了,我们玩起来多没有意思啊。
那么在c语言中,我们怎样生成随机数呢,我们可以用到rand函数,rand函数生成的随机数是0~32767.但当你真的用这个函数时,你会发现,生成的一组数据中虽然是不一样的,但是你会发现后面产生的都是同一种数据。那这可不行啊,有规律的还怎么玩游戏?这是因为rand生成的随机数与它里面的种子有关,种子没有改变,生成的数据就不会改变,那么有没有一种方法让种子改变呢?
当然是有的咯,c语言中又提供了一个函数叫srand,它用来初始化随机数的生成器的。
srand的原型:void srand (unsigned int seed) 无符号整型。
那就是说给srand的种子是随机的话,那rand就能生成随机数,但是在srand函数生成生成随机数的同时又需要一个随机数,此时就有一些矛盾了。
那么在c语言中,还有一个函数叫time,因为时间是随时发生变化的,所以我们可以使用程序运行的时间作为种子。
time函数的原型:time_t time (time_t* timer)
time函数的参数timer,如果返回的是非NULL的指针,函数也会将这个返回的差值放在timer指向的内存中带回去,如果time是NULL,就返回这个时间的差值,time函数返回的这个时间差被叫做:时间戳
那么问题解决了:
srand((unsigned int)time(NULL));//强制类型转换
那么game函数就好写了吧:
void game()
{
int a = rand()%100+1;//生成1`100的随机数
int guess = 0;
int count = 5;//设置只有五次机会。
printf("数字的范围为1~100\n");
while(count)
{
printf("您还有%d次机会\n",count);
printf("请猜数字:\n");
scanf("%d",&guess);
if(guess>a)
{
printf("猜大了\n");//注意别写错了,不然你根本猜不对
}
else if(guess<a)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;//猜对了,就跳出循环
}
count--;
}
if(count == 0)
{
printf("很遗憾,你没有机会了。\n正确答案为%d\n",a);
}
}
那接下来看看整体的代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>//rand函数的头文件
#include <time.h>//time函数的头文件
void sex()
{
printf("**********************\n");
printf("****** 1. play *******\n");
printf("****** 0. exit *******\n");
printf("**********************\n");
};
void game()
{
int a = rand() % 100 + 1;
int count = 5;
int guess = 0;
printf("数字的范围为1~100\n");
while (count)
{
printf("你还有%d次机会:\n",count);
printf("请猜数字:");
scanf("%d", &guess);
if (a > guess)
{
printf("猜小了\n");
printf("\n");
}
else if (a < guess)
{
printf("猜大了\n");
printf("\n");
}
else
{
printf("猜对了,真棒!");
printf("\n");
break;
}
count--;
}
if (count == 0)
{
printf("很遗憾,你没有机会了\n正确答案是:%d\n", a);
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
sex();
printf("请输入:>\n");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏");
break;
default:
printf("输入错误,请重新输入。\n");
}
} while (input);
return 0;
}
玩游戏展示:
还有今天是程序员节,在此祝大家:祝福你们在编码的世界中,每天都能找到乐趣和挑战!愿你们的代码高效、功能强大,每一行都充满智慧和创造力!愿你们的Bug少如沙子,每一次调试都能顺利解决!无论是在漆黑的代码迷宫中还是在无尽的技术海洋中,愿你们都能坚持不懈,追求卓越!愿你们的技术不断进步,拥有无限的创新思维和工程能力!最重要的是,愿你们身体健康,平安快乐地度过每一天!加油,程序员朋友们!祝福你们!
文字是偷的,但爱你们的心却是蒸的,加油!
今天的内容到此为止咯,大家帮帮忙看看有没有什么问题,我们一起探讨哦,或者你有什么问题,都可以提出来哦,我们一起进步!
不用太想念我,明天我还是会来的。