【经典小游戏】猜数字

  • 前言
  • 1. 游戏介绍
  • 2. 游戏实现
  • 3. 游戏优化
  • 结语


在这里插入图片描述

个人主页:C_GUIQU

在这里插入图片描述

前言

各位小伙伴大家好!
先问大家一个问题:我们为什么要学习?
简单来说,就是为了实践!只有不断学习才可以帮助我们更好地实践!
小编也是第一次讲解游戏,下面带来猜数字游戏的讲解!!后期不定时给大家更新好玩的游戏!!!
在这里插入图片描述

1. 游戏介绍

【概述】
猜数字游戏是小编学习C语言时写的第一个小游戏。

猜数字,顾名思义就是去想一个数字然后与电脑生成的一个有范围的随机数作比较,直到猜对为止。

【游戏过程】
1.自动产生一个1-100之间的随机数
2.猜数字

猜对了:就恭喜你猜对了,游戏结束。
猜错了:会告诉你是猜大了,还是猜小了,继续猜,直到猜对为止。

3.游戏可以一直玩,除非退出游戏

2. 游戏实现

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h> // 引入标准输入输出头文件
#include<stdlib.h> // 引入标准库头文件,用于调用 srand 和 rand 函数
#include<time.h> // 引入时间头文件,用于获取当前时间// 菜单函数,用于打印游戏菜单
void menu() {printf("欢迎来到猜数字游戏!\n");printf("**************************\n");printf("********   1.play   ******\n");printf("********   0.exit   ******\n");printf("**************************\n");
}// 游戏函数,包含猜数字游戏的主要逻辑
void game() {int guess = 0; // 定义变量用于存储玩家的猜测int ret = rand()%100+1; // 生成1到100之间的随机数// 循环直到玩家猜对数字while(1) {printf("请猜数字:\n");scanf("%d",&guess); // 从键盘读取玩家的输入// 根据猜测的数字与随机数比较,给出提示if(guess < ret) {printf("猜小了\n");}else if(guess > ret) {printf("猜大了\n");}else {printf("恭喜你,猜对了!\n");break; // 猜对后跳出循环}}
}int main() {int input = 0; // 定义变量用于存储玩家的选择srand((unsigned int)time(NULL)); // 使用当前时间作为随机数生成的种子// do...while 循环用于不断地显示菜单和处理玩家输入do {menu(); // 调用菜单函数显示菜单printf("请选择玩法:");scanf("%d",&input); // 从键盘读取玩家的选择// switch 语句用于根据玩家的选择执行不同的操作switch(input) {case 1: // 如果玩家选择1,则调用游戏函数开始游戏game();break; // 结束switch语句case 0: // 如果玩家选择0,则打印退出消息并结束循环printf("退出游戏\n");break; // 结束switch语句default: // 如果玩家输入其他值,则提示错误并要求重新选择printf("选择错误,重新选择!\n");break; // 结束switch语句}} while(input); // 当玩家选择不为0时,继续循环return 0; // 程序结束
}

在这里插入图片描述

3. 游戏优化

下面增加难度,猜数字只有5次机会~

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>
#include<stdlib.h>
#include<time.h>// 菜单函数,用于打印游戏菜单
void menu() {printf("欢迎来到猜数字游戏!\n");printf("**************************\n");printf("********   1.play   ******\n");printf("********   0.exit   ******\n");printf("**************************\n");
}// 游戏函数,包含猜数字游戏的主要逻辑
void game() {int guess = 0; // 定义变量用于存储玩家的猜测int ret = rand()%100+1; // 生成1到100之间的随机数int attempts = 0; // 定义变量用于存储猜测次数// 循环直到玩家猜对数字或达到5次尝试while(attempts < 5) {printf("请猜数字(你还有%d次机会):\n",5 - attempts);scanf("%d",&guess); // 从键盘读取玩家的输入attempts++; // 猜测次数加1// 根据猜测的数字与随机数比较,给出提示if(guess < ret) {printf("猜小了\n");}else if(guess > ret) {printf("猜大了\n");}else {printf("恭喜你,猜对了!\n");break; // 猜对后跳出循环}}if(attempts == 5 && guess != ret) {printf("很遗憾,你没有在5次内猜对数字。游戏结束!正确答案是:%d\n",ret);}
}int main() {int input = 0; // 定义变量用于存储玩家的选择srand((unsigned int)time(NULL)); // 使用当前时间作为随机数生成的种子// do...while 循环用于不断地显示菜单和处理玩家输入do {menu(); // 调用菜单函数显示菜单printf("请选择玩法:");scanf("%d",&input); // 从键盘读取玩家的选择// switch 语句用于根据玩家的选择执行不同的操作switch(input) {case 1: // 如果玩家选择1,则调用游戏函数开始游戏game();break; // 结束switch语句case 0: // 如果玩家选择0,则打印退出消息并结束循环printf("退出游戏\n");break; // 结束switch语句default: // 如果玩家输入其他值,则提示错误并要求重新选择printf("选择错误,重新选择!\n");break; // 结束switch语句}} while(input); // 当玩家选择不为0时,继续循环return 0; // 程序结束
}

在这里插入图片描述

结语

以上就是小编对猜数字游戏的讲解。
如果觉得小编讲的还可以,还请一键三连。互三必回!
持续更新中~!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/635873.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

驱动开发-windows驱动设计目标

驱动程序和应用程序不一样的&#xff0c;由于其直接运行于windows r0级&#xff0c;故对于开发有更多和更严格的标准&#xff0c;一般会有以下一些常见的设计目标: 安全性、可移植性、可配置性、 可被中断、多处理器安全、可重用 IRP、 支持异步 I/O这些是基本目标。 1. 安全…

稀碎从零算法笔记Day53-LeetCode:不同路径 II

稀碎系列有点更不动(更多是自己懈怠了) 题型&#xff1a;矩阵、模拟 链接&#xff1a;63. 不同路径 II - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &…

C++ 深入理解 继承

本篇文章将谈谈一下几个问题&#xff1a; 1.基类和派生类对象赋值转换 2.继承中的作用域 3.派生类的默认成员函数 4.复杂的菱形继承及菱形虚拟继承 5.其他 1.基类和派生类对象赋值转换 1.派生类对象 可以赋值给 基类的对象 / 基类的指针 / 基类的引用。这里有个形象的说法叫切…

VSCode 目录折叠展开、缩进深度设置

1、VSCode 目录折叠展开设置 运行 Visual Studio Code &#xff0c;按 Ctrl &#xff0c;打开设置 输入Explorer:Compact Folders&#xff0c;取消勾选 或者在设置文件上添加 "explorer.compactFolders": false2、VSCode 目录缩进深度设置 输入Workbench Tree:…

STM32学习和实践笔记(18):STM32的外部中断的配置

如上图&#xff0c;EXTI的0-15是分配给GPIO的16个引脚。 但是GPIO差不多每个端口都有16个引脚&#xff0c;具体是怎样分配的呢&#xff1f; 很简单&#xff0c;就是通过AFIO寄存器来选择和分配。 比如&#xff0c;EXTI0&#xff0c;可以分配给GPIOA0&#xff0c;GPIOB0...GP…

Windows COM技术:COM介绍、代码演示。

目录 步骤一&#xff1a;理解COM技术 介绍COM的基础知识 1. COM的目的和特点 2. COM的关键概念 3. COM的实现 4. COM与DCOM、ActiveX 讨论COM的用途 1. 软件自动化 2. 插件和扩展 3. 跨语言开发 4. 分布式计算 5. 系统级组件 6. 网络浏览器插件 步骤二&#xff1a…

【嵌入式Linux】STM32P1开发环境搭建

要进行嵌入式Linux开发&#xff0c;需要在Windows、Linux和嵌入式Linux3个系统之间来回跑&#xff0c;需要使用多个软件工具。经过了4小时的安装&#xff08;包括下载时间&#xff09;&#xff0c;我怕以后会忘记&#xff0c;本着互利互助的原则&#xff0c;我打算把这些步骤详…

线性代数基础3 行列式

行列式 行列式其实在机器学习中用的并不多&#xff0c;一个矩阵必须是方阵&#xff0c;才能计算它的行列式 行列式是把矩阵变成一个标量 import numpy as np A np.array([[1,3],[2,5]]) display(A) print(矩阵A的行列式是&#xff1a;\n,np.linalg.det(A))array([[1, 3],[2, …

Tomcat核心组件深度解析

Server组件 Service组件 连接器Connector组件 容器Container组件

Vue3——组件基础

组件基础 1. 组件定义与使用 1.1 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>组件基础&l…

linux中如何挂载yum云仓库进行软件的安装

1.首先在根目录下建立文件&#xff0c;用来挂载镜像文件 [rootclient ~]# mkdir /rhel9 2.挂载镜像文件&#xff1a; [rootclient ~]# mount /dev/cdrom /rhel9 3.切换到 /etc/yum.repos.d 下的目录并查看 &#xff0c;创建 rhel9.repo文件&#xff0c;并编辑云仓库域名&am…

ubuntu在xshell中使用快捷方式操作命令,减少命令行的数入量

第一步 第二步 然后无脑确定 第三步 在xshell的显示方式 方式一 这样就会在每个窗格中进行显示 方式二 效果显示–> 这种窗格的显示是全局的 然后你双击这个process就会自动把命令打在命令行上&#xff0c;减少你的输入量