一些练习 C 语言的小游戏
一些练习 C 语言的小游戏
—
1. 猜数字游戏
描述:程序随机生成一个数字,玩家需要猜测这个数字,并根据提示(太高或太低)调整猜测,直到猜中为止。
功能点:
- 随机数生成 (
rand()
函数)。 - 循环和条件判断。
- 用户输入处理。
示例代码框架:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main() {int number, guess, attempts = 0;srand(time(0)); // 初始化随机数种子number = rand() % 100 + 1; // 生成 1 到 100 的随机数printf("猜数字游戏!我已经选好了一个 1 到 100 的数字。\n");do {printf("请输入你的猜测:");scanf("%d", &guess);attempts++;if (guess > number) {printf("太高了!\n");} else if (guess < number) {printf("太低了!\n");} else {printf("恭喜你,猜对了!你用了 %d 次。\n", attempts);}} while (guess != number);return 0;
}
2. 石头剪刀布
描述:玩家与计算机进行石头、剪刀、布的游戏,判断胜负。
功能点:
- 随机选择(计算机的选择)。
- 条件判断(胜负逻辑)。
- 用户输入处理。
示例代码框架:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main() {int player, computer;srand(time(0));printf("石头剪刀布游戏!\n");printf("请选择:1 - 石头, 2 - 剪刀, 3 - 布\n");scanf("%d", &player);computer = rand() % 3 + 1; // 计算机随机选择 1-3printf("你选择了:%d\n", player);printf("计算机选择了:%d\n", computer);if (player == computer) {printf("平局!\n");} else if ((player == 1 && computer == 2) || (player == 2 && computer == 3) || (player == 3 && computer == 1)) {printf("你赢了!\n");} else {printf("你输了!\n");}return 0;
}
3. 贪吃蛇(简化版)
描述:实现一个简单的贪吃蛇游戏,蛇在一个二维网格中移动,吃到食物后变长。
功能点:
- 二维数组表示游戏地图。
- 键盘输入控制方向。
- 游戏循环更新状态。
提示:
- 使用
#
表示墙壁,*
表示蛇,@
表示食物。 - 可以使用
ncurses
库(Linux)或conio.h
(Windows)处理键盘输入。
4. 井字棋(Tic-Tac-Toe)
描述:实现一个两人对战的井字棋游戏,玩家轮流在 3x3 的棋盘上放置标记(X 或 O),先连成一条线的玩家获胜。
功能点:
- 二维数组表示棋盘。
- 判断胜负逻辑。
- 用户输入验证。
示例代码框架:
#include <stdio.h>char board[3][3];
void initBoard() {for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {board[i][j] = ' ';}}
}void printBoard() {for (int i = 0; i < 3; i++) {printf(" %c | %c | %c \n", board[i][0], board[i][1], board[i][2]);if (i < 2) printf("---+---+---\n");}
}int checkWin(char player) {// 检查行、列和对角线for (int i = 0; i < 3; i++) {if (board[i][0] == player && board[i][1] == player && board[i][2] == player) return 1;if (board[0][i] == player && board[1][i] == player && board[2][i] == player) return 1;}if (board[0][0] == player && board[1][1] == player && board[2][2] == player) return 1;if (board[0][2] == player && board[1][1] == player && board[2][0] == player) return 1;return 0;
}int main() {initBoard();char currentPlayer = 'X';int x, y, moves = 0;while (1) {printBoard();printf("玩家 %c,请输入坐标(x y):", currentPlayer);scanf("%d %d", &x, &y);if (board[x][y] != ' ') {printf("该位置已被占用,请重新输入。\n");continue;}board[x][y] = currentPlayer;moves++;if (checkWin(currentPlayer)) {printBoard();printf("玩家 %c 获胜!\n", currentPlayer);break;}if (moves == 9) {printBoard();printf("平局!\n");break;}currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';}return 0;
}
5. 扫雷游戏
描述:实现一个简单的扫雷游戏,玩家需要揭开格子并避免触雷。
功能点:
- 二维数组表示地雷分布。
- 地雷周围的数字计算。
- 游戏逻辑(揭开格子、标记地雷等)。
6. 迷宫游戏
描述:生成一个迷宫,玩家需要通过键盘输入控制角色走出迷宫。
功能点:
- 迷宫生成算法(如深度优先搜索)。
- 键盘输入控制角色移动。
- 碰撞检测。
总结
这些小游戏涵盖了 C 语言的基本语法(如循环、条件判断、数组等)以及一些进阶技巧(如二维数组操作、随机数生成、用户输入处理等)。
相关文章:
一些练习 C 语言的小游戏
一些练习 C 语言的小游戏 — 1. 猜数字游戏 描述:程序随机生成一个数字,玩家需要猜测这个数字,并根据提示(太高或太低)调整猜测,直到猜中为止。 功能点: 随机数生成 (rand() 函数)。循环和…...
曲线拟合 | Matlab基于贝叶斯多项式的曲线拟合
效果一览 代码功能 代码功能简述 目标:实现贝叶斯多项式曲线拟合,动态展示随着数据点逐步增加,模型后验分布的更新过程。 核心步骤: 数据生成:在区间[0,1]生成带噪声的正弦曲线作为训练数据。 参数设置:…...
Python 序列构成的数组(对序列使用+和_)
对序列使用和* Python 程序员会默认序列是支持 和 * 操作的。通常 号两侧的序列由 相同类型的数据所构成,在拼接的过程中,两个被操作的序列都不会被 修改,Python 会新建一个包含同样类型数据的序列来作为拼接的结果。 如果想要把一个序列…...
洛谷题单1-P5703 【深基2.例5】苹果采购-python-流程图重构
题目描述 现在需要采购一些苹果,每名同学都可以分到固定数量的苹果,并且已经知道了同学的数量,请问需要采购多少个苹果? 输入格式 输入两个不超过 1 0 9 10^9 109 正整数,分别表示每人分到的数量和同学的人数。 输…...
计算机网络 用deepseek帮助整理的复习资料(一)
### 计算机网络基础知识整理 --- #### **一、网络类型** 1. **局域网 (LAN)** - **定义**:覆盖小范围(如家庭、教室、公司)。 - **特点**:高带宽、低延迟,设备通过交换机互联。 - **示例**࿱…...
虚拟电商-话费充值业务(二)话费充值对接供应商模块开发
一、对接供应商模块开发 供应商对接模块chongba_recharge_supplier主要负责的就是调用外部的供应商系统进行充值下单,这种调用是一种基于HTTP协议的调用。 此外在供应商对接模块中主要是实现的业务逻辑有: 1:余额或押金不足情况下的失败轮…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例3,TableView16_03 拖拽视觉反馈示例
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例3,TableView16_03 拖…...
游戏引擎学习第186天
回顾并规划今天的任务 现在,我们站在了一个关键的时刻,准备突破,拥有一些优秀的性能分析代码。从目前来看,我们已经能够看到时间的消耗情况,我对这一点感到非常兴奋。昨天的直播中我们勉强让一些东西工作了࿰…...
树的基础_遍历(蓝桥云课)
一些树上问题: 树的直径: import java.util.*;public class TreeDiameter {static List<List<Integer>> tree; // 用邻接表存储树结构static int[] depth; // 记录每个节点的深度public static void main(String[] args) {S…...
29_项目
目录 http.js 1、先注册账号 register.html 2、再登录 login.html 3、首页 index.html 4 详情 details.html cart.html css index.css register.css details.css 演示 进阶 http.js let baseURL "http://localhost:8888"; let resgiterApi baseURL &…...
vue搭建一个树形菜单项目
首先搭建项目需要先通过步骤搭建一个vue的项目,然后创建一个component文件,里面新建一个index.vue页面来。 这是引入的element-ui组件库里的组件,来实现我的路由,渲染的是我存储的动态路由,所以需要先安装并且引用。 …...
Python包管理完全指南:pip常用命令与最佳实践
一、pip核心功能解析 作为Python官方推荐的包管理工具,pip承担着以下关键职责: 从PyPI(Python Package Index)仓库安装/卸载第三方库管理项目依赖关系和版本控制支持本地/私有仓库的包安装维护虚拟环境中的包隔离 二、20个必知…...
Eigen 3
本文来源:腾讯元宝 Eigen 3 是一个专注于线性代数运算的高性能 C 模板库,广泛应用于科学计算、机器学习、计算机视觉等领域。以下是其核心特性与功能的综合介绍: 1. 核心定义与设计理念 纯头文件库:Eigen 3 无需编译或链接…...
数字化转型国家标准- GB/T 45341-2025《数字化转型管理 参考架构》
GB/T 45341-2025《数字化转型管理 参考架构》 前言一、数字化转型的根本任务二、标准的主要内容2.1、 核心概念2.2、总体框架2.3、 主要视角2.4、过程方法2.5、 发展阶段与水平档次 前言 在工业和信息化部和国家标准化管理委员会的指导下,全国信息化和工业化融合管…...
Redis 源码硬核解析系列专题 - 第三篇:核心数据结构之字典(Dict)
1. 引言 字典(Dict)是Redis的核心数据结构之一,用于实现键值存储(Redis数据库的核心)和内部元数据管理(如客户端状态)。Redis的字典基于哈希表实现,支持高效的增删改查操作。本篇将深入剖析其源码实现,包括哈希表结构、冲突解决和渐进式rehash机制。 2. 字典的结构体…...
JS—异步编程:3分钟掌握异步编程
个人博客:haichenyi.com。感谢关注 一. 目录 一–目录二–引言三–JavaScript 事件循环机制四–定时器的秘密:setTimeout 和 setInterval五–异步编程模型对比 二. 引言 在现代Web开发中,异步编程是提升性能的关键技术。无论是脚本加载&am…...
Linux C语言调用第三方库,第三方库如何编译安装
在 Linux 环境下使用 C 语言调用第三方库时,通常需要先对第三方库进行编译和安装。以下为你详细介绍一般的编译安装步骤,并给出不同类型第三方库(如使用 Makefile、CMake 构建系统)的具体示例。 一般步骤 1. 获取第三方库源码 …...
gogs私服搭建
一.介绍: gogs是一个用Go语言开发的自助Git服务,目标是简单、快速搭建Git服务, 支持多种平台,包括Linux、Windows等。它类似于GitHub,但更轻量,适合个人或小团队使用, 在简化git服务搭建流程的…...
python和c中作用域的差异
好的,我将详细列举 Python 和 C 语言在作用域规则上的主要差异,并为每种差异提供具体的代码示例,以便更清晰地理解它们之间的不同。 1. 块级作用域(Block Scope) C 语言 在 C 语言中,任何用 {} 包裹的代…...
C++ 中将函数作为参数传递
C 中将函数作为参数传递 1. 通过指针传递函数 函数可以通过传递函数的地址来作为参数传递;简而言之,就是通过指针实现这一点。 示例代码 #include <iostream> using namespace std;// 定义加法和减法函数 #include <iostream> #include …...
【C++】右值引用与完美转发
目录 一、右值引用: 1、左值与右值: 2、左值引用和右值引用: 二、右值引用的使用场景: 1、左值引用的使用场景: 2、右值引用的使用场景: 移动构造 移动赋值 三、完美转发: 1、万能引用…...
批量合并 PDF 文档,支持合并成单个文档,也支持按文件夹合并 PDF 文档
在日常工作中,合并多个 PDF 文档为一个文件是非常常见的需求。通过合并 PDF,不仅能够更方便地进行管理,还能在特定场景下(如批量打印)提高效率。那么,当我们需要批量合并多个 PDF 文件时,是否有…...
SQL Server 备份相关信息查看
目录标题 一、统计每个数据库在不同备份目录和备份类型下的备份次数,以及最后一次备份的时间整体功能详细解释 二、查询所有完整数据库备份的信息,包括备份集 ID、数据库名称、备份开始时间和备份文件的物理设备名称,并按备份开始时间降序排列…...
Flutter_学习记录_AppBar中取消leading的占位展示
将leading设置为null将automaticallyImplyLeading设置为false 看看automaticallyImplyLeading的说明: Controls whether we should try to imply the leading widget if null. If true and [AppBar.leading] is null, automatically try to deduce what the leading…...
多省发布!第27届中国机器人及人工智能大赛各赛区比赛通知
01 大赛介绍 中国机器人及人工智能大赛是由中国人工智能学会主办的极具影响力的全国性学科竞赛,旨在推动我国机器人及人工智能技术的创新与应用,促进相关专业的人才培养。作为全国高校学科竞赛A类赛事,该比赛吸引了众多高校和科研机构的积极…...
leetcode199 二叉树的右视图
小问题:if(!q.empty()) 这个条件会导致只处理一层,而不会处理所有层。正确的做法应该是用 while(!q.empty()) 循环处理每一层。 class Solution { public:vector<int> rightSideView(TreeNode* root) {vector<int> res;queue<TreeNode…...
大模型评测框架evalscope、openCompass
一、evalscope使用说明 1、如何使用智增增的接口: VLLM_USE_MODELSCOPETrue evalscope eval \--model qwen2.5-14b-instruct \--api-url https://api.zhizengzeng.com/v1/chat/completions \--api-key skxxx \--eval-type service \--datasets gsm8k \--limit 10 …...
接口自动化——初识pytest
缩写单词含义.passed通过Ffailed失败(用例执行时报错)Eerror出错(fixture执行报错)sskipped跳过Xxpassed预期外的通过(不符合预期)xxfailed预期内的失败(符合预期) 1.pytest 配置 1…...
SkyWalking实战
1、下载SkyWalking APM 1.手动下载 Downloads | Apache SkyWalkinghttps://skywalking.apache.org/downloads/ 2.链接下载 https://dlcdn.apache.org/skywalking/10.2.0/apache-skywalking-apm-10.2.0.tar.gzhttps://dlcdn.apache.org/skywalking/10.2.0/apache-skywalking-…...
游戏AI实现-GOAP
GOAP原理: GOAP(面向目标的行动规划,Goal - Oriented Action Planning) 旨在让智能体通过选择一系列行动来达成特定目标。它基于对世界状态的理解,每个行动都有前提条件和效果。智能体通过分析当前世界状态与目标状态…...
Baklib内容中台的核心优势是什么?
智能化知识管理引擎 Baklib的智能化知识管理引擎通过多源数据整合与智能分类技术,实现企业知识资产的自动化归集与动态更新。系统内置的语义分析算法可自动识别文档主题,结合自然语言处理技术生成结构化标签体系,大幅降低人工标注成本。针对…...
windows第二十章 单文档应用程序
文章目录 单文档定义新建一个单文档应用程序单文档应用程序组成:APP应用程序类框架类(窗口类)视图类(窗口类,属于框架的子窗口)文档类(对数据进行保存读取操作) 直接用向导创建单文档…...
eBay多账号安全运营技术体系:从环境隔离到智能风控的工程化实践
一、多账号运营风险模型解析 (技术化重构关联检测机制) 环境指纹维度: 浏览器指纹参数:Canvas/WebGL渲染特征(差异度要求≥98%) 设备指纹参数:GPU型号/声卡特征(识别准确率92%&…...
《Python Web网站部署应知应会》No4:基于Flask的调用AI大模型的高性能博客网站的设计思路和实战(上)
基于Flask的调用AI大模型的高性能博客网站的设计思路和实战(上) 摘要 本文详细探讨了一个基于Flask框架的高性能博客系统的设计与实现,该系统集成了本地AI大模型生成内容的功能。我们重点关注如何在高并发、高负载状态下保持系统的高性能和…...
vulnhub-Node1
一、信息收集 1、扫靶机ip arp-scan -l 2、端口扫描 淦,只有22端口和3000端口,访问一下3000端口吧,估计是个网页 nmap -p- -Pn -sC -sV -n 192.168.66.130PORT STATE SERVICE VERSION 22/tcp open ssh OpenSS…...
什么是 OLAP 数据库?企业如何选择适合自己的分析工具
引言:为什么企业需要 OLAP 数据库? 你是否曾经经历过这样的场景: 市场部门急需一份用户行为分析报告,数据团队告诉你:“数据太大了,报表要跑 4 个小时”;业务负责人在会议中提出一个临时性分析…...
计算机视觉准备八股中
一边记录一边看,这段实习跑路之前运行完3DGAN,弄完润了,现在开始记忆八股 1.CLIP模型的主要创新点: 图像和文本两种不同模态数据之间的深度融合、对比学习、自监督学习 2.等效步长是每一步操作步长的乘积 3.卷积层计算输入输出…...
电源系统的热设计与热管理--以反激式充电器为例
前言 反激电源常用于各种电子设备中,比如充电器、适配器等,它们通过变压器进行能量转换。高温环境可能对电子元件造成影响,特别是像MOSFET、二极管、变压器这样的关键部件,导致效率变低,甚至可能导致功能失效。还有安…...
【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft 服务器搭建,并实现远程联机,详细教程
【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft 服务器搭建,详细详细教程 一、 服务器介绍二、下载 Minecraft 服务端三、安装 JDK 21四、搭建服务器五、本地测试连接六、添加服务,并设置开机自启动 前言: 推荐使用云服务器部署&…...
vue数据两个相同的参数对比只显示一个
vue数据两个相同的参数对比只显示第一个 如每条的rq0/rq1对比data() { return{dataList: [{CurrencyName: "现金",rq0: "2017-10-20 19:22:17",rq1: "2018-02-07 19:48:00",yje: -1179.8},{CurrencyName: "微支付",rq0: "2017-10…...
vue如何实现前端控制动态路由
在 Vue.js 中,动态路由是一种根据不同用户权限或其他因素动态改变路由列表的功能。这种机制允许开发者根据后端提供的权限数据动态渲染前端路由,实现多用户权限系统,不同用户展示不同的导航菜单。 动态路由的配置 动态路由的配置涉及到前端…...
开发环境部署
一、安装Django-5.0.3 1、将已下载的软件通过winscp上传至centos下 2、 安装 [root@hcss-ecs-1e19 ~]# ll total 10372 -rw-r--r-- 1 root root 10620661 Feb 10 10:16 Django-5.0.3.tar.gz [root@hcss-ecs-1e19 ~]# pip3 install Django-5.0.3.tar.gz Processing ./Django-…...
C语言入门教程100讲(0)从了解C语言的发展史开始
文章目录 引言1. C语言的起源2. C语言的诞生3. C语言的标准化4. C语言的进一步发展5. C语言的影响与应用6. C语言的未来结语引言 C语言作为一种高效、灵活且具有广泛应用的编程语言,在计算机科学史上占据着举足轻重的地位。它的设计不仅影响了后来的编程语言,也对操作系统、…...
笔记本电脑更换主板后出现2203:System configuration is invalid,以及2201、2202系统错误的解决
笔记本电脑更换主板后启动出现2203:System configuration is invalid,以及2201、2202系统错误的解决 自用的一台ThinkpadT490笔记本电脑 ,由于主板故障,不得不更换主板,通过某宝购置主板后进行了更换。 具体拆卸笔记本可搜索网络视频教程。 注意: 在更换主板时,注意先拍…...
如何为 Debian 和 Kali 系统更换软件源并更新系统
在 Linux 系统中,软件源(Software Repository)是获取软件包和更新的核心途径。然而,默认的软件源可能会因为地理位置、网络状况等原因导致下载速度缓慢,甚至无法访问。为了提升系统的软件获取效率,许多用户…...
git:远程仓库拉取到本地,fork到本地,修改后再上传
讲述仓库成员拉取远程仓库(即组长的仓库,里面有成员)到本地,修改内容再上传的详细步骤: 1.进入仓库,首先fork (如不,所作操作会直接对远程仓库进行,不用管理员审核&…...
C++ 中名字的作用域、概念、嵌套与实践(十八)
1. 名字的作用域基本概念 作用域(scope) 指的是程序中的一个区域(通常被花括号 {} 包围),在这里一个名字(如变量名、函数名、类名等)有其特定含义。 在 同一个作用域 中,一个名字只…...
Go语言nil原理深度解析:底层实现与比较规则
Go语言nil原理深度解析:底层实现与比较规则 引言 在Go语言中,nil 是一个特殊的关键字,用于表示引用类型的“零值”。它在指针、切片、映射、通道、接口和函数等类型中广泛使用。本文将从 底层实现、比较规则、与其他语言的对比 等角度&#…...
使用Java操作Redis
文章目录 常用Redis键操作命令使用Java操作Redis配置 Redis 连接信息创建 Maven 项目结构 操作字符串操作列表操作集合操作散列操作有序集合总结 报错解决办法: 当使用redis-cli连接客户端出现not connected时 使用redis-cli -h 192.168.222.101 -p 6379即可解决 …...
开源的CMS建站系统可以随便用吗?有什么需要注意的?
开源CMS建站系统虽然具有许多优点,但并非完全“随便用”。无论选哪个CMS系统,大家在使用的时候,可以尽可能地多注意以下几点: 1、版权问题 了解开源许可证:不同的开源CMS系统采用不同的开源许可证,如GPL、…...