当前位置: 首页 > news >正文

改编版猜数字小游戏,猜错了就黑屏(整蛊版本)

1. 前情提要

在前一篇博客中,我们了解到了如何获得随机数,并且通过运算可以规定所获得的这个随机数的范围在多少数值之间

那么接下来我们就需要去具体去实现猜数字游戏的各种布置

2. 布置主菜单

玩一个游戏,最开始的界面都会是一个主菜单,英文名也就是menu

在我们打印菜单的时候,也经常构建一个函数叫menu,这是一个我们自己创造的函数,我们给这个menu函数赋予的功能也就是打印出一个主菜单到屏幕上面

在这个函数内部,我们也只需要构建我们需要打印出来的菜单内容即可

41b6eceeb95a417fa71ff0d679e63ef5.png

如图所示,我们所需要的菜单就这样被打印出来了

那么接下来我们还需要具体去识别我们对于菜单里面的选择,对于这种精确的选择内容,此时就需要用到switch语句了

133b4af665e94b99931e83477f388ccc.png

这样一处理,我们菜单的效果就实现了

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;
}

 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PhotoZoom Pro 9:AI加持让图像放大革命性飞跃 PhotoZoom下载
  • mkv怎么转换mp4格式?格式转换秘籍大揭底!
  • 《黑神话:悟空》发售后快手游戏笔记本电脑GMV日环比增长40%
  • haproxy编译安装
  • 闲置物品交易平台网站商城-计算机毕设Java|springboot实战项目
  • 泛微eteams OA对接金蝶云星空写入数据
  • 火语言RPA流程组件介绍--打开文件/运行进程命令
  • 通过Qt Creator Plugin开发Qt Creator插件-【金丹篇】
  • 视频项目开发,EasyCVR视频融合平台为何成为关键驱动力
  • jenkins最佳实践(一):jenkins安装与部署
  • SAP 界面小技巧-快速查找单据及路径
  • 机械学习—零基础学习日志(如何理解概率论5)
  • 二分查找理解
  • 喜讯!30篇论文完成知网(CNKI)检索,历时不到2个月
  • Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用HDR功能(Python)
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Django 博客开发教程 8 - 博客文章详情页
  • ES6 ...操作符
  • Java 内存分配及垃圾回收机制初探
  • JavaScript创建对象的四种方式
  • jQuery(一)
  • MaxCompute访问TableStore(OTS) 数据
  • Redux 中间件分析
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Vue组件定义
  • 给Prometheus造假数据的方法
  • 记一次用 NodeJs 实现模拟登录的思路
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 排序算法之--选择排序
  • 前嗅ForeSpider采集配置界面介绍
  • 如何使用 JavaScript 解析 URL
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • -- 数据结构 顺序表 --Java
  • 数组的操作
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • # .NET Framework中使用命名管道进行进程间通信
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #includecmath
  • ${factoryList }后面有空格不影响
  • (+4)2.2UML建模图
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (7)STL算法之交换赋值
  • (9)STL算法之逆转旋转
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (k8s中)docker netty OOM问题记录
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (七)Activiti-modeler中文支持
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)为C# Windows服务添加安装程序
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net CHARTING图表控件下载地址
  • .NET MVC第三章、三种传值方式
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性