在看了鹏哥视频后对他写的一些代码慢慢的自己总结,来提升自己,首先对于一款游戏来说,不管你进去玩不玩,都会有一个主界面Welcome,其次呢会有一个选择是否玩游戏,所以如果选择开始玩游戏的话,那就有了一个游戏内容Game。但是在开始猜数字之前,需要先了解一下几个知识,那就是时间戳是什么?如何去产生一个随机数?那么就先认识一下时间戳,顾名思义它就是与时间脱不了干系,因为我们在设计随机数的时候,为了避免具有一定的规律性,在电脑上最随机的也就是时间这个概念,所以就产生了时间戳,它表示的是计算机起始的时间减去当前计算机的时间。也就是说利用时间戳设置随机数的生成起点。而在这里产生随机数会用到rand函数,但运用这个函数需要配合srand函数,在下面的代码中会具体分析。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void Welcome()
{
printf("***************************\n");
printf("****** WELCOME TO HERE*****\n");
printf("********* 1.play **********\n");
printf("********* 0.exit **********\n");
}
void Game()
{
int r_num = rand() % 100 + 1;//定义一个随机数,因为随机数产生的范围太大,不容易猜,所以用这种方式控制范围在1--100
int input = 0;
while (1)
{
printf("请输入你猜的数字:");
scanf("%d", &input);
if (input > r_num)
{
printf("哦吼,猜大哦,再试试\n");
}
else if (input < r_num)
{
printf("糟糕,猜小了,哈哈哈,别灰心,奥力给\n");
}
else
{
printf("哇塞哟,猜对了哦,恭喜你呀!\n");
break;//因为已经猜对了,不需要继续了,所以用break结束循环
}
}
}
int main(void)
{
int input = 0;
srand((unsigned)time(NULL));
do
{
Welcome();
printf("Hello,请选择是否要开始猜数字的旅程哦!\n");
scanf("%d", &input);
switch (input)
{
case 1:
Game();
break;
case 0:
printf("退出游戏啦\n");
break;
default:
printf("请再次返回,重新输入哦\n");
break;
}
} while (input);
return 0;
}
在这个程序中,需要在说明的是rand函数,在msdn中去查找它的头文件是<stdlib.h>,对它的解释如下:The rand function returns a pseudorandom integer in the range 0 to RAND_MAX. Use the srand function to seed the pseudorandom-number generator before calling rand,也就是说rand函数返回一个范围从0到RAND_MAX的伪随机整数,在调用rand之前,需要使用srand函数作为伪随机数生成器设置种子。然后查找srand函数可以看到 void srand( unsigned int seed ),表示的是一个无符号整型数据,而time这个是属于长整型数据,所以在使用srand((unsigned)time(NULL));需要强制类型转换,在产生这样一个数字之后,就是玩家来猜数字,无非就是三种情况,猜大,猜小,和猜正确,所以猜数字游戏也就告一段落了,感谢!以上就是我的一些笔记,如有错误,请指出!