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

贝蒂的捣蛋小游戏~(C语言)

引言:

          前面贝蒂已经给大家介绍了选择,循环结构~,今天贝蒂就基于这两种结构,为大家讲解一种捣蛋小游戏的设计思路和方法哦。

1.游戏要求

游戏要求:
1. 电脑⾃动⽣成1~100的随机数
2. 玩家猜数字,猜数字的过程中,根据猜测数据的⼤⼩给出⼤了或⼩了的反馈。

3. 玩家一共有五次机会,在五次内,猜对就游戏通关,猜错就游戏失败。

4. 游戏失败执行惩罚措施(60s后电脑关机),若输入我是猪,则取消关机。

2.随机数的生成

    2.1rand()函数 

1.头文件<stdlib.h>

2.C 库函数rand(void) 返回一个范围在 0 到 RAND_MAX 之间的“随机数”。RAND_MAX 是一个常量,它的默认值在不同的实现中会有所不同,但是值至少是 32767。

3.int rand (void);,void表示()内不需要填值,返回值是int类型,也就是生成那个“随机数”

    代码实现如下: 

#include <stdio.h>
#include <stdlib.h>
int main()
{int a = rand();printf("%d\n",a);return 0;
}

      贝蒂说:“但是rand()函数生成的“随机数”是一种伪随机数,是根据一个数值按照某个公式推算出来的,并不是真正的随机数,那该怎么办呢~” 

2.2srand()函数 

     srand()函数能间接控制rand()函数生成的值, 我们知道了rand()并不是真正的随机数,它是根据某种算法生成的,我们自然而然想到,我们能不能通过控制srand(),来间接控制rand()呢,让我们来实验一下吧。

1.头文件<stdlib.h>

2.C 库函数srand() 播种由函数 rand 使用的随机数发生器。

3. void srand(unsigned int seed),不返回值。

     贝蒂说:“但是srand()如果参数部分仍是一个确定的值,rand()生成的数仍是伪随机数,嘿嘿,疯狂套娃~”

    2.3time()函数

         我们要使srand()参数部分是一个不断地改变量,才能生成真正的随机数,而我们生活中常见的变量--时间,就自然而然可以成为其参数。

1.头文件<time.h>

2.C 库函数 time(time_t *seconds) 返回自纪元 Epoch(1970-01-01 00:00:00 UTC)起经过的时间,以秒为单位。如果 seconds 不为空,则返回值也存储在变量 seconds 中。

3.time_t time(time_t *seconds),time_t就是无符号整数。

      语言来描述time()函数有点复杂,但大家不用担心,我们只要会用就行啦,生成随机数的代码如下:

srand((unsigned int)time(NULL));
int ret=rand()%10+1;//生成1~10的随机数

3.主体思路

1.首先设置游戏简易菜单,当游戏开始时,自动显示。

2.让玩家选择,1为开始游戏,0为退出游戏。

3.选择其他数字,提醒玩家输入错误,重新让玩家选择。 

    代码实现如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{int input = 0;//输入srand((unsigned int)time(NULL));//提前设置时间种子do{menu();printf("请选择:>");scanf("%d", &input);//1 0 switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,重新选择\n");break;}} while (input);//选择0退出游戏return 0;
}

4.菜单的实现

    贝蒂所学有限,只能设计出这样一个简单菜单哦~

void menu()
{printf("*******************************\n");printf("******    1. play     *********\n");printf("******    0. exit     *********\n");printf("*******************************\n");
}

5.游戏的实现 

     首先我们先生成1~100的随机数,然后设置回答次数,每次回答错误次数-1,次数用完告诉玩家随机数的值,并执行惩罚措施。

     代码实现如下:

void game()
{int guess = 0;//生成随机数int ret = rand() % 100 + 1;int count = 5;//回答次数printf("五次失败触发彩蛋哦~\n");while (count){printf("你还有 %d 次机会\n", count);printf("请输入要猜的数字:>");scanf("%d", &guess);if (guess < ret){printf("猜小了\n");}else if (guess > ret){printf("猜大了\n");}else{printf("恭喜你,猜对了,数字是:%d\n", ret);break;}count--;}if (count == 0){printf("很遗憾,三次次机会使用完,挑战失败,随机数是:%d\n", ret);punish();//执行惩罚措施}
}

  6.惩罚措施 

    6.1system()函数

1.头文件<stdlib.h>

2. C 库函数 int system(const char *command) 把 command 指定的命令名称或程序名称传给要被命令处理器执行的主机环境,并在命令完成后返回。(简单来说就是执行系统指令)

    6.2关机指令

system("shutdown -s -t 60");//60s后关机
//不要忘记之间的空格哦

      贝蒂说:“如果大家想直接让电脑关机,可以把60改成0哦~,但是千万不要告诉其他人是贝蒂告诉你的哦~”

     6.3取消关机指令

      有关机指令自然也有取消关机指令啦,不然别人只能干看着电脑关机啦~,哈哈

      代码如下:

system("shutdown -a");//取消关机

      6.4strcmp()函数

      当玩家输入“我是猪”的时候,则取消关机,用计算机语言表达就是比较玩家输入的内容是否与“我是猪”这个字符串相同,可能大家第一想法是用==,但是字符串在内存中是以首元素地址存储的,比较两个地址肯定不同,所以我们就借用一个库函数strcmp()来比较~

1. 头文件<string.h>

2. 声明:int strcmp(const char *str1, const char *str2),str1 -- 要进行比较的第一个字符串。str2 -- 要进行比较的第二个字符串。

3. 返回值:

 如果返回值小于 0,则表示 str1 小于 str2。

 如果返回值大于 0,则表示 str1 大于 str2。

 如果返回值等于 0,则表示 str1 等于 str2。

      代码实现:

void punish()
{printf("作为惩罚,你的电脑将在60s后关机\n");system("shutdown -s -t 60");//60s后关机printf("如果输入我是猪则取消惩罚\n");while(1){printf("请输入\n");char arr[20] = { 0 };gets(arr);if (strcmp(arr, "我是猪") == 0){system("shutdown -a");//取消关机break;}}
}

7完整代码:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
void menu()
{printf("*******************************\n");printf("******    1. play     *********\n");printf("******    0. exit     *********\n");printf("*******************************\n");
}
void punish()
{printf("作为惩罚,你的电脑将在60s后关机\n");system("shutdown -s -t 60");//60s后关机printf("如果输入我是猪则取消惩罚\n");while(1){printf("请输入\n");char arr[20] = { 0 };gets(arr);if (strcmp(arr, "我是猪") == 0){system("shutdown -a");//取消关机break;}}
}
void game()
{int guess = 0;//生成随机数int ret = rand() % 100 + 1;int count = 5;//回答次数printf("五次失败触发彩蛋哦~\n");while (count){printf("你还有 %d 次机会\n", count);printf("请输入要猜的数字:>");scanf("%d", &guess);if (guess < ret){printf("猜小了\n");}else if (guess > ret){printf("猜大了\n");}else{printf("恭喜你,猜对了,数字是:%d\n", ret);break;}count--;}if (count == 0){printf("很遗憾,三次次机会使用完,挑战失败,随机数是:%d\n", ret);punish();//执行惩罚措施}
}
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{int input = 0;//输入srand((unsigned int)time(NULL));//提前设置时间种子do{menu();printf("请选择:>");scanf("%d", &input);//1 0 switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,重新选择\n");break;}} while (input);//选择0退出游戏return 0;
}

 结言:

           快来叫你的好兄弟,好姐妹来玩玩吧~,嘻嘻~

相关文章:

贝蒂的捣蛋小游戏~(C语言)

引言&#xff1a; 前面贝蒂已经给大家介绍了选择&#xff0c;循环结构~&#xff0c;今天贝蒂就基于这两种结构&#xff0c;为大家讲解一种捣蛋小游戏的设计思路和方法哦。 1.游戏要求 游戏要求&#xff1a; 1. 电脑⾃动⽣成1~100的随机数 2. 玩家猜数字&#xff0c;猜数字的过…...

c# 判断是否连接公网

有一个需求&#xff0c;软件需要在连接公网的状态下才能使用&#xff0c;否则弹出提示 我们判断一下网络不通情况 1.系统未开启网络&#xff1a;例如关掉了WIFI&#xff0c;拔掉网线 2.网络已连接无internet&#xff1a;连接了路由器&#xff0c;但路由器未连接外网 对于以上…...

unity 2d 入门 飞翔小鸟 场景延续(八)

1、新建c#脚本如下 代码&#xff0c;在前方生成生成自身图片并3s后销毁自身&#xff0c;在碰撞物体后小鸟死亡后不删除自身 using System.Collections; using System.Collections.Generic; using UnityEngine;public class CopyScene : MonoBehaviour { //要复制的对象public…...

scrapy介绍,并创建第一个项目

一、scrapy简介 scrapy的概念 Scrapy是一个Python编写的开源网络爬虫框架。它是一个被设计用于爬取网络数据、提取结构性数据的框架。 Scrapy 使用了Twisted异步网络框架&#xff0c;可以加快我们的下载速度。 Scrapy文档地址&#xff1a;http://scrapy-chs.readthedocs.io/z…...

Rust语言项目实战(九 - 完结) - 胜利与失败

回顾 在前面的章节中,我们已经实现了这个游戏中大部分的模块和功能,我们可以指挥我们的战机左右移动,并发射子弹;我们还创造了一堆的侵略者,从屏幕上方缓缓降落,试图到达屏幕的底部。 本章中,我们将对游戏的输赢作出最后的裁决,到底是我们的保卫者英勇无敌,还是侵略…...

【Linux系统编程】项目自动化构建工具make/Makefile

介绍&#xff1a; make和Makefile是用于编译和构建C/C程序的工具和文件。Makefile是一个文本文件&#xff0c;其中包含了编译和构建程序所需的规则和指令。它告诉make工具如何根据源代码文件生成可执行文件&#xff0c;里面保存的是依赖关系和依赖方法。make是一个命令行工具&a…...

harmony开发之Text组件的使用

TextInput、TextArea是输入框组件&#xff0c;通常用于响应用户的输入操作&#xff0c;比如评论区的输入、聊天框的输入、表格的输入等&#xff0c;也可以结合其它组件构建功能页面&#xff0c;例如登录注册页面。 图片来源黑马程序员 Text组件的使用&#xff1a; 文本显示组…...

using meta-SQL 使用元SQL 六

%Table Syntax %Table(recname) Description Use the %Table construct to return the SQL table name for the record specified with recname. 使用%Table构造返回使用recname指定的记录的SQL表名。 This construct can be used to specify temporary tables for runn…...

如何将浮点数点左边的数每三位添加一个逗号,如 12000000.11 转化为『12,000,000.11』

// 方法二 function format1(number) {return Intl.NumberFormat().format(number); } // 方法三 function format2(number) {return number.toLocaleString("en"); }...

朴素贝叶斯 贝叶斯方法

朴素贝叶斯 贝叶斯方法 背景知识 贝叶斯分类&#xff1a;贝叶斯分类是一类分类算法的总称&#xff0c;这类算法均以贝叶斯定理为基础&#xff0c;故统称为贝叶斯分类。先验概率&#xff1a;根据以往经验和分析得到的概率。我们用 P ( Y ) P(Y) P(Y)来代表在没有训练数据前假设…...

探索鸿蒙 TextInput组件

TextInput 根据组件名字&#xff0c;可以得知他是一个文本输出框。 声明代码&#x1f447; TextInput({placeholder?:ResourceStr,text?:ResourceStr}); placeholder: 就是提示文本&#xff0c;跟网页开发中的placeholder一样的 text&#xff1a;输入框当前的文本内容 特殊属…...

CNN,DNN,RNN,GAN,RL+图像处理常规算法(未完待续)

好的&#xff0c;让我们先介绍一些常见的神经网络模型&#xff0c;然后再讨论图像处理的常规算法。 神经网络模型&#xff1a; 1. CNN&#xff08;卷积神经网络&#xff09; 原理&#xff1a; CNN主要用于处理图像数据。它包含卷积层、池化层和全连接层。卷积层通过卷积操作…...

C# 语法笔记

1.ref、out&#xff1a;参数传递的两种方式 ref&#xff1a;引用传递 using System; namespace CalculatorApplication {class NumberManipulator{public void swap(ref int x, ref int y){int temp;temp x; /* 保存 x 的值 */x y; /* 把 y 赋值给 x */y temp; /* 把 t…...

el-table 表格多选(后端接口搜索分页)实现已选中的记忆功能。实现表格数据和已选数据(前端分页)动态同步更新。

实现效果&#xff1a;&#xff08;可拉代码下来看&#xff1a;vue-demo: vueDemo&#xff09; 左侧表格为点击查询调用接口查询出来的数据&#xff0c;右侧表格为左侧表格所有选择的数据&#xff0c;由前端实现分页。 两个el-table勾选数据联动更新 实现逻辑&#xff1a; el-…...

Vue3自定义Hooks定义

在Vue3中&#xff0c;自定义Hooks的定义是通过创建一个函数来共享逻辑或状态&#xff0c;以便在多个组件之间重复使用。Vue3中的自定义Hooks与React中的自定义Hooks非常相似&#xff0c;但有一些细微的差别。 要定义一个自定义Hook&#xff0c;可以按照以下步骤进行操作&#x…...

为什么Java程序员需要掌握多线程?揭秘并发编程的奥秘

为什么Java程序员需要掌握多线程&#xff1f;揭秘并发编程的奥秘 个人简介前言多线程对于Java的意义&#x1f4cc;1.提高程序性能&#xff1a;&#x1f4cc;2 提高用户体验&#xff1a;&#x1f4cc;3支持并发处理&#xff1a;&#x1f4cc;4 资源共享和同步&#xff1a;&#…...

数组实现循环队列(新增一个空间)

目录 一、前言 1.如何实现循环&#xff1f; 2.如何判断队列为空&#xff1f; 3.如何判断队列为满&#xff1f; 二、循环队列的结构定义 三、循环队列的创建及其初始化 四、入队 五、出队 六、取队头元素 七、取队尾元素 八、判空 九、判满 十、销毁队列 一、前言 …...

Mysql 索引概念回顾

一、什么是索引 在关系数据库中&#xff0c;索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构&#xff0c;它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录&#xff0c;可以根据…...

基于SpringBoot+Vue学生成绩管理系统前后端分离(源码+数据库)

一、项目简介 本项目是一套基于SpringBootVue学生成绩管理系统&#xff0c;主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目可以直接作为bishe使用。 项目都经过严格调试&#xff0c;确…...

Hadoop集群破坏试验可靠性验证

集群环境说明&#xff1a; 准备5台服务器&#xff0c;hadoop1、hadoop2、hadoop3、hadoop4、hadoop5&#xff1b; 分别部署5个节点的zookeeper集群、hadoop集群、hbase集群 本次对于Hadoop集群测试主要分为五个方面&#xff1a; 手动进行datanode节点删除&#xff1a;&#…...

开源监控自动化平台openclaw-lighthouse:从告警到自愈的智能运维实践

1. 项目概述&#xff1a;一个开源的“灯塔”式监控与自动化平台最近在梳理团队内部的监控和自动化工具链时&#xff0c;发现了一个挺有意思的开源项目&#xff0c;叫openclaw-lighthouse。这个名字本身就很有画面感&#xff0c;“openclaw”是开放的爪子&#xff0c;象征着抓取…...

FTDI Friend:从USB转串口到AVR编程的嵌入式开发利器

1. 项目概述&#xff1a;为什么你需要一个FTDI Friend&#xff1f;在嵌入式开发和单片机玩家里&#xff0c;串口通信就像空气和水一样基础且不可或缺。无论是给Arduino上传代码&#xff0c;还是让树莓派和传感器模块“说上话”&#xff0c;亦或是调试一个自己焊的STM32最小系统…...

基于RP2040与Santroller固件,复活旧吉他控制器玩转现代音游

1. 项目概述&#xff1a;让尘封的“神器”重获新生如果你和我一样&#xff0c;是个从《吉他英雄》、《摇滚乐队》时代走过来的老玩家&#xff0c;家里大概率还躺着一两把当年斥“巨资”购入的专用吉他控制器。它们手感扎实&#xff0c;造型酷炫&#xff0c;但最大的悲哀莫过于&…...

gifuct-js:高性能JavaScript GIF解码器的架构设计与性能优化策略

gifuct-js&#xff1a;高性能JavaScript GIF解码器的架构设计与性能优化策略 【免费下载链接】gifuct-js Fastest javascript .GIF decoder/parser 项目地址: https://gitcode.com/gh_mirrors/gi/gifuct-js gifuct-js是一个专注于高效GIF文件解析与解码的JavaScript库&a…...

显存又爆了?移动云弹性KV缓存:让你告别“显存焦虑”

上下文越长&#xff0c;显存越吃紧对话轮次越多&#xff0c;延迟越明显并发量一高&#xff0c;服务就卡顿……随着AI大模型向超长上下文、高并发、多轮交互深度演进&#xff0c;AI推理所需缓存的内容呈指数级增长。显存容量的需求爆炸与显存采购的高昂成本&#xff0c;使得超长…...

等保2.0合规实战:Redis安全配置核查与加固指南

1. Redis安全配置入门&#xff1a;为什么等保2.0要求这么严格&#xff1f; 我第一次接触Redis安全配置是在一次等保2.0合规检查中。当时客户系统因为Redis默认配置导致数据泄露&#xff0c;整个项目组连夜加班整改。从那以后&#xff0c;我就养成了每次部署Redis必做安全检查的…...

5分钟掌握Diablo Edit2:暗黑破坏神II角色编辑器的终极指南

5分钟掌握Diablo Edit2&#xff1a;暗黑破坏神II角色编辑器的终极指南 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 还在为暗黑破坏神II的刷装备烦恼吗&#xff1f;想要快速体验不同build的乐趣…...

别再头疼了!手把手教你用赫优讯NT151网关搞定FANUC机器人与西门子S7-1500 PLC通讯

工业现场通讯实战&#xff1a;FANUC机器人与西门子S7-1500 PLC跨协议高效对接指南 当FANUC机器人的EtherNet/IP网络需要与西门子S7-1500的PROFINET系统握手时&#xff0c;现场工程师往往会面临协议壁垒带来的调试噩梦。去年在某新能源汽车电池产线项目中&#xff0c;我们团队用…...

嵌入式Tickless低功耗机制:从原理到FreeRTOS与裸机实践

1. 项目概述&#xff1a;从“忙等”到“休眠”&#xff0c;Tickless如何重塑嵌入式系统的能耗观在嵌入式开发领域&#xff0c;尤其是电池供电的设备上&#xff0c;功耗是悬在工程师头顶的达摩克利斯之剑。传统的实时操作系统&#xff08;RTOS&#xff09;或裸机调度&#xff0c…...

Unity 2019.4.7f1实战:从零复刻Flappy Bird,搞定PC/Web/Android三端发布

Unity 2019.4.7f1实战&#xff1a;从零复刻Flappy Bird&#xff0c;搞定PC/Web/Android三端发布 当你第一次打开Unity时&#xff0c;面对那个空荡荡的3D场景&#xff0c;可能会有些不知所措。但别担心&#xff0c;今天我们就用这个看似简单的Flappy Bird游戏&#xff0c;带你走…...