1. 前情提要
在前一篇博客中,我们了解到了如何获得随机数,并且通过运算可以规定所获得的这个随机数的范围在多少数值之间
那么接下来我们就需要去具体去实现猜数字游戏的各种布置
2. 布置主菜单
玩一个游戏,最开始的界面都会是一个主菜单,英文名也就是menu
在我们打印菜单的时候,也经常构建一个函数叫menu,这是一个我们自己创造的函数,我们给这个menu函数赋予的功能也就是打印出一个主菜单到屏幕上面
在这个函数内部,我们也只需要构建我们需要打印出来的菜单内容即可
如图所示,我们所需要的菜单就这样被打印出来了
那么接下来我们还需要具体去识别我们对于菜单里面的选择,对于这种精确的选择内容,此时就需要用到switch语句了
这样一处理,我们菜单的效果就实现了
3. 具体猜数字的游戏实现
这个时候我们就需要真正开始写游戏的运行了,其实到这里就很简单了
我们只需要用到我们前面学到的如何生成一个随机数的知识,然后通过if循环,不断对比我们猜的数字与随机数的大小就可以实现猜数字游戏的基本逻辑了
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void menu()
{printf("***********主菜单*************\n");printf("****** 1. play ********\n");printf("****** 0. exit ********\n");printf("*********敬请期待**************\n");
}void game()
{//1. 生成随机数int r = rand() % 100 + 1;//2. 猜数字int guess = 0;int count = 6;//最多猜6次while (count){printf("你还有%d次机会\n", count);printf("请猜数字:>");scanf("%d", &guess);if (guess < r)printf("猜小了\n");else if (guess > r)printf("猜大了\n");else{printf("恭喜你猜对了,随机数是:%d\n在茫茫人海中相遇不易,请珍惜现在身边的每位同伴\n", r);break;}count--;}if (count == 0){printf("机会使用完,你失败了,正确的数字是:%d\n我们生活中的每次美好邂逅都是极度幸运的\n", r);}
}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;
}
然后将game函数用到游戏中,可以在打印的格式中加上一些自己想写的特殊的文案(也让这个猜数字游戏更有趣一些)
4. 整蛊类黑屏关机代码
我们之前提到过,人对计算机的操作本质上都是需要计算机去识别我们的指令的
在我们电脑上,其实关机的操作也是通过一段代码执行的
在下面的介绍,就以Windows系统为例
Windows系统中想要关机,可以利用一个库函数叫做system函数
system函数的使用语法如下
system("shutdown -s -t 60");
shutdown的意思就是关机,根据英文本意明白即可
后面的60则代表了设置的等待关机时间,单位为秒,设置60就代表60秒后系统便会自动关机
大家可以利用上面的函数自己实践一下,在Windows系统上都是适用的
值得强调的是,由于引用了一个新的库函数,那么必然也要包含其对应的头文件
而system库函数的头文件则是#include<windows.h>
5. 整蛊改版
那么我们如何加入一些整蛊元素呢?
解除关机需要用到的函数也是system
使用语法如下:
system("shutdown -a");
这个函数就可以解除关机了
既然已经确定了要关机,那么我们是否能够对解除关机做出一些限制条件???
此时我们可以用到strcmp这个库函数,它的作用就是判断两个字符串是否是相等的,如果是相等的,那么输出结果就会是0,此时就可以解除关机
如果对方并没有按照你想的办法输入文字,那么她的电脑就非关不可了
#include <windows.h>
#include <string.h>//system可以执行系统命令
int main()
{char input[20] = {0};system("shutdown -s -t 60");again:printf("请注意,你的电脑将在一分钟内关机,如果输入:我是猪 就取消关机\n");scanf("%s", input);if (0==strcmp(input,"我是猪"))//两个字符串不能使用等号比较大小!!!应该使用strcmp-比较字符串大小的库函数{system("shutdown -a");}else{goto again;}return 0;
}
上面的“我是猪”只是一个示例,可随意更改printf内所打印的文字内容
6. 两眼一黑的猜数字游戏改编版
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include<string.h>
void a()
{printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");printf("☆☆1.Guess the numbers.☆☆\n");printf("☆☆☆☆☆2.exit☆☆☆☆☆☆\n");printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
}
void b()
{int c = rand()%100+1;int d = 0;int e = 6;while (e) {printf("你还有%d次机会。\n",e);printf("请猜数字:");scanf("%d",&d);if (d<c){printf("猜小了。\n"); }else if (d>c){printf("猜大了。\n");}else{printf("哇,你居然猜对了,真是太棒了,难道你是天才!\n");break;}e--;}if (e==0){printf("很遗憾,你失败了,正确的数字是:%d.\n",c);char input[20] = {0};system("shutdown -s -t 60");again: printf("请注意,你的电脑将在一分钟后自动关机,如果要取消关机,请输入:我是猪。\n");printf("请输入:");scanf("%s",input);if (strcmp("我是猪。",input) == 0){printf("已成功取消关机。\n");system("shutdown -a");}else{printf("输入错误,请重新输入:");goto again;}}
}
int main()
{int g=0;srand((unsigned int)time(NULL));do{a();printf("请选择1或2:"); scanf("%d",&g) ;switch(g){case 1:b();break;case 2:printf("游戏结束。\n");break;default:printf("选择错误,请重新输入。\n");break;}}while(g);return 0;
}