代码实现: 1.打印菜单:游戏规则:电脑会随机产生一个1~100的数字,玩家猜数字,如果玩家猜小了,电脑会提示猜小了。猜大了,电脑会提示猜大了。猜对了,电脑会告诉你:恭喜你,猜对了。
当我们游戏运行起来的时候,至少先要看见菜单,所以我们首先要做的就是打印菜单。其次游戏要重复玩,所以我们用do....while语句来实现。
#include2.根据菜单选择:void menu() { printf("******************************************n"); printf("********* 1.play ************n"); printf("********* 2.exit ************n"); printf("******************************************n"); } int main() { do { //打印菜单 menu(); } while(); return 0; }
#include3.猜数字的实现:void menu() { printf("******************************************n"); printf("********* 1.play ************n"); printf("********* 0.exit ************n"); printf("******************************************n"); } int main() { int input = 0; do { //打印菜单 menu(); printf("请选择:"); scanf("%d", &input); switch (input) { case 1: printf("猜数字n"); break; case 0: printf("退出游戏n"); break; default: printf("选择错误n"); break; } } while(input); return 0; }
当我们输入1时进入游戏开始进行猜数字,下面我们来看一下如何用代码实现:
必备知识:
下面我们来看一下RAND_MAX有多大:
我们可以看到RAND_MAX代表的数字为0x7fff,转换为十进制为32767.
⭐:需要注意的是调用rand函数之前需要用srand函数来设置随机数生成器,且设置一次就可以。
下面我们来看一下srand函数:
当srand函数里面的参数在不断发生变化时,rand返回的值才会不断的发生变化。我们知道时间在不断的发生变化,而每一个时间都对应一个数字,而我们获得的数字叫做时间戳。那我们如何获取时间戳呢?此时我们需要time函数,下面我们来看一下time函数:
我们可以将空指针(NULL)传入time函数里面:time(NULL).
下面我们来探究一下time_t是什么:
我们可以看到time_t不过是__time64_ttypedef重命名过来的,而__time64_t又是64位整型typedef重命名过来的,所以time函数的返回类型为64位整型。但srand要的参数类型为无符号整型,此时我们只需要强制类型转换即可。
rand函数返回的值的范围为0~32767,而我们要产生的数字范围为0~100,所以我们要把rand返回的值%100再+1.
void game() { int guess = 0; //生成随机数 int r = rand()%100+1; //0~99->1~100 //猜数字 while (1) { printf("猜数字:"); scanf("%d", &guess); if (guess < r) { printf("猜小了n"); } else if (guess > r) { printf("猜大了n"); } else { printf("恭喜你,猜对了!n"); break;//猜对跳出循环。 } } }
:因为随机数生成器只能设置一次,所以将它放入到了主函数中。
4.完整代码呈现:#include#include #include void menu() { printf("******************************************n"); printf("********* 1.play ************n"); printf("********* 0.exit ************n"); printf("******************************************n"); } void game() { int guess = 0; //生成随机数 int r = rand()%100+1; //0~99->1~100 //猜数字 while (1) { printf("猜数字:"); scanf("%d", &guess); if (guess < r) { printf("猜小了n"); } else if (guess > r) { printf("猜大了n"); } else { printf("恭喜你,猜对了!n"); break;//猜对跳出循环。 } } } int main() { int input = 0; srand((unsigned int)time(NULL)); //时间-设置随机数的生成器 do { //打印菜单 menu(); printf("请选择:"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出游戏n"); break; default: printf("选择错误n"); break; } } while(input); return 0; }
今天的猜数字游戏就到这里,大家赶紧试着上手去敲一敲感受一下代码带来的快乐吧✌。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)