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

2024-08-23 07:44

本文主要是介绍改编版猜数字小游戏,猜错了就黑屏(整蛊版本),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

 

 

这篇关于改编版猜数字小游戏,猜错了就黑屏(整蛊版本)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098768

相关文章

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

查看MySQL数据库版本的四种方法

《查看MySQL数据库版本的四种方法》查看MySQL数据库的版本信息可以通过多种方法实现,包括使用命令行工具、SQL查询语句和图形化管理工具等,以下是详细的步骤和示例代码,需要的朋友可以参考下... 目录方法一:使用命令行工具1. 使用 mysql 命令示例:方法二:使用 mysqladmin 命令示例:方

Java版本不兼容问题详细解决方案步骤

《Java版本不兼容问题详细解决方案步骤》:本文主要介绍Java版本不兼容问题解决的相关资料,详细分析了问题原因,并提供了解决方案,包括统一JDK版本、修改项目配置和清理旧版本残留等步骤,需要的朋... 目录错误原因分析解决方案步骤第一步:统一 JDK 版本第二步:修改项目配置第三步:清理旧版本残留兼容性对

Linux搭建单机MySQL8.0.26版本的操作方法

《Linux搭建单机MySQL8.0.26版本的操作方法》:本文主要介绍Linux搭建单机MySQL8.0.26版本的操作方法,本文通过图文并茂的形式给大家讲解的非常详细,感兴趣的朋友一起看看吧... 目录概述环境信息数据库服务安装步骤下载前置依赖服务下载方式一:进入官网下载,并上传到宿主机中,适合离线环境

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa