前言
这是我自己做的第三个小项目---猜数字游戏。后期我会继续制作其他小项目并开源至博客上。
上一小项目是关机整蛊游戏,没看过的同学可以去看看:
有关关机整蛊游戏的小项目
https://blog.csdn.net/hsy1603914691/article/details/142300643?spm=1001.2014.3001.5502
游戏要求
1.随机生成一个1-100之间的随机数。
2.玩家猜数,如果不对则给出提示范围,直到正确为止。
函数准备
rand()函数
函数功能:随机生成一个1-32767之间的伪随机数。
int rand ();
使用rand()函数之前,需要引入库函数<stdlib.h>。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main() { printf("%d", rand()); return 0; }
1. 由于rand()函数是根据它的种子来生成随机数。
2. 而它的种子默认值为1。
3. 所以直接使用时产生的是伪随机数,可以预测。
srand()函数
srand ((unsigned int)n);
1.程序中在调用 rand ()函数之前先调用 srand() 函数。
2.通过 srand() 函数的参数n,来设置rand()函数生成随机数的时候的种子。
3.只要参数n在变化,rand ()函数的种子就在变化,每次生成的随机数序列也就变化起来了。
4.srand()函数是不需要频繁调用的,⼀次运行的程序中调用一次就够了。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main() { srand(1); printf("%d", rand(srand( (unsigned int) n); return 0; }
但此时又需要给srand()函数的参数n一个随机值。
time()函数
1. 函数功能:使用程序运行的时间作为种子。(因为时间时刻在发生变化)
2. 使用time()函数的时候需要包含头文件:<time.h>。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand((unsigned int)time(NULL)); printf("%d", rand()); return 0; }
优化范围
1.生成0-99之间随机数
rand()%100
2.生成1-100之间随机数
rand()%100+1
3.生成a-b之间的随机数
a+rand()%(b-a+1)
代码实现
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 void make_menu() { printf("**欢迎来到猜数游戏**\n"); printf("********************\n"); printf("*******0.EXIT*******\n"); printf("*******1.PLAY*******\n"); printf("********************\n"); return; } void game() { int a = 0; int num=rand()%100+1; int chance = N; printf("已生成一个1-100的随机数\n"); do { printf("你还有%d次机会\n",chance); printf("请输入你要猜的数:\n"); scanf("%d", &a); if (a > num) { printf("猜大了\n"); } else if (a < num) { printf("猜小了\n"); } else if (a = num) { printf("恭喜,猜对了\n"); } } while (--chance); if (chance == 0) printf("很遗憾,你的机会已经用完,游戏失败\n"); } int main() { srand((unsigned int)time(NULL)); int input = 0; do { make_menu(); scanf("%d", &input); switch (input) { case 0: printf("退出游戏!\n"); break; case 1: printf("进入游戏!\n"); game(); break; default: printf("输入错误,请重新输入!\n"); break; } } while (input); return 0; }
致谢
感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!