实现代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> void menu() { printf("***********************************\n"); printf("*********1.play 0.exit **********\n"); printf("***********************************\n"); printf("请输入数字\n"); } void game() { printf("游戏开始\n"); int x = rand() % 100 + 1; int guess = 0; while (1) { scanf("%d", &guess); if (guess > x) printf("猜大了\n"); else if (guess < x) printf("猜小了\n"); else { printf("恭喜你猜对了!\n"); break; } } } int main() { srand((unsigned int)time(NULL)); int ret = 0; do { menu(); scanf("%d", &ret); switch (ret) { case 1: game(); break; case 0: printf("游戏结束"); break; default: printf("发生错误,请重新输入"); break; } } while (ret); return 0; }
随机数的产生:
猜字谜游戏最精髓的地方就在于数字随机,但如何实现数字随街呢?随机意味着数字在不停的变动,而什么东西是在一直变动的呢?不难想到,时间就是一直在变动的事物,因此要产生随机数需要借助rand,srand和time函数,前两个函数在stdlib.h头文件中,time函数在time.h头文件中.
如何用rand和srand函数实现随机数的产生:
首先第一步:rand函数在生产随机数之前,要使用srand函数设置随机数的生成器,如图,调用srand函数并给出一个随机数的种子,使用了time函数得到了时间戳,时间戳在强制转换类型后就成为了srand函数的一个种子,随后再调用rand函数就可得出随机数字.
由于随机数的范围限制在1到100,因此,使用rand函数得出随机值后模100再加一就得到了在1到100之间范围的数字.
总体逻辑:
使用do while循环来达到多次游戏的实现,在do while内设置switch语句来达到分支选择的效果,玩家可以选择玩游戏或者退出游戏.
分别封装menu和game函数,将menu菜单函数放在do while循环里来实现每次游戏前都会出现游戏菜单,将game函数放置在case 1分支里来实现选择游戏后的效果.
在输入1选择游戏后就会生成一个随机值用局部变量x来接受,此时同样也会有一个局部变量guess等待玩家输入赋值,通过玩家输入赋值与x进行比较不同的结果对应不同的反应.
游戏效果图如下: