【C语言】C语言实现猜单词小游戏(源码+报告)【独一无二】

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


C语言实现猜单词小游戏(源码+报告)【独一无二】


目录

  • C语言实现猜单词小游戏(源码+报告)【独一无二】
  • 一、设计要求
  • 二、功能展示
    • 2.1 玩家记录
    • 2.2 单词管理
    • 2.3 游戏开始
    • 2.4 添加单词
    • 2.5 退出
  • 三、代码分析
    • 3.1. 主函数
    • 3.2 开始游戏模块
    • 3.3 单词管理模块
    • 3.4 添加单词模块
    • 3.5 查看单词模块
    • 3.6 查看玩家记录模块
    • 3.7 文件操作模块
    • 3.8 得分排序模块


一、设计要求

该程序将从单词库文件中随机地选择一个单词,显示该单词的中文意思,并显示第一个字母,用户每次输入一个单词,程序判断该该单词是否正确,用户可以最多有3次猜测的机会。如果用户猜中该单词,则显示下一个单词, 设置游戏的时间。主要基本功能有:开始猜单词、榜单(记录每个用户历史记录,并排名次)、单词管理(对单词库中的单词进行增删改)。程序设计题:猜单词

1. 主菜单:

1.游戏开始
2.单词管理
3.玩家记录
4.退出

2. 基本规则

  1. 实现猜单词的游戏:游戏规则不限制。
  2. 单词管理:程序中用来做谜题的单词必须存放在硬盘的文件中。可以增加单词。单词增加要做到快速导入
  3. 玩家记录:程序要求记录前三名比较好的成绩。记录的时候要求有排名、玩家姓名、猜的次数/单词长度三项。这三条记录要求保存在硬盘上的文件中,在程序开始运行的时候就必须读入,以便随时供玩家查询、并且根据玩家的成绩进行更新。玩家退出系统的时候,最新记录也要存的硬盘中去。

👉👉👉源码关注【测试开发自动化】公众号,回复 “ 猜单词游戏 ” 获取。👈👈👈

3. 其他要求:

  1. 变量、函数命名符合规范。
    2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数。返回值也要以注释的形式说明用途:关键的语句要求有注释。
    3)程序的层次清晰,可读性强。

二、功能展示

整体设计思路如下:
在这里插入图片描述

2.1 玩家记录

在这里插入图片描述

2.2 单词管理

在这里插入图片描述

👉👉👉源码关注【测试开发自动化】公众号,回复 “ 猜单词游戏 ” 获取。👈👈👈

2.3 游戏开始

在这里插入图片描述

在这里插入图片描述

👉👉👉源码关注【测试开发自动化】公众号,回复 “ 猜单词游戏 ” 获取。👈👈👈

2.4 添加单词

在这里插入图片描述

2.5 退出

在这里插入图片描述

👉👉👉源码关注【测试开发自动化】公众号,回复 “ 猜单词游戏 ” 获取。👈👈👈

三、代码分析

3.1. 主函数

主函数负责程序的入口和主循环。显示主菜单,接受用户的选择。根据用户的选择调用相应的功能模块。

int main() {int choice;while (1) {printf("主菜单\n1.游戏开始\n2.单词管理\n3.玩家记录\n4.退出\n");printf("请输入你的选择:");scanf("%d", &choice);switch (choice) {case 1:startGame();break;case 2:wordManagement();break;case 3:viewRecords();break;case 4:return 0;default:printf("无效选择,请重新输入。\n");}}return 0;
}

3.2 开始游戏模块

加载单词库。随机选择一个单词。提示用户,显示单词的中文意思和第一个字母。允许用户猜测,最多三次机会。根据猜测结果给予相应的反馈。

void startGame() {// ...(详细见前文startGame()函数的分析)
}

👉👉👉源码关注【测试开发自动化】公众号,回复 “ 猜单词游戏 ” 获取。👈👈👈

3.3 单词管理模块

显示单词管理菜单,接受用户选择。根据用户选择调用相应的功能模块。

void wordManagement() {int choice;printf("单词管理\n1. 添加单词\n2. 查看单词\n3. 返回\n");printf("请输入你的选择:");scanf("%d", &choice);switch (choice) {case 1:addWord1();break;case 2:displayWords();break;case 3:return;default:printf("无效选择,请重新输入。\n");}
}

3.4 添加单词模块

用户输入新单词和中文意思。将新单词追加到单词文件中。

void addWord1() {// ...(详细见前文addWord1()函数的分析)
}

👉👉👉源码关注【测试开发自动化】公众号,回复 “ 猜单词游戏 ” 获取。👈👈👈

3.5 查看单词模块

加载单词库。显示所有单词。

void displayWords() {// ...(详细见前文displayWords()函数的分析)
}

3.6 查看玩家记录模块

加载玩家得分记录。显示玩家得分记录。

void viewRecords() {// ...(详细见前文viewRecords()函数的分析)
}

👉👉👉源码关注【测试开发自动化】公众号,回复 “ 猜单词游戏 ” 获取。👈👈👈

3.7 文件操作模块

loadWords(): 从文件加载单词到内存数组。
addWord(): 将新单词追加到单词文件中。
loadScores(): 从文件加载玩家得分记录到内存数组。
saveScores(): 保存玩家得分记录到文件。

3.8 得分排序模块

用于qsort函数的回调,比较两个玩家得分。

int compareScores(const void* a, const void* b) {// ...(详细见前文compareScores()函数的分析)
}

👉👉👉源码关注【测试开发自动化】公众号,回复 “ 猜单词游戏 ” 获取。👈👈👈

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

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

相关文章

用于HUD平视显示器的控制芯片:S2D13V40

一款利用汽车抬头显示技术用于HUD平视显示器的控制芯片:S2D13V40。HUD的全称是Head Up Display,即平视显示器,以前应用于军用飞机上,旨在降低飞行员需要低头查看仪表的频率。起初,HUD通过光学原理,将驾驶相关的信息投射…

PS从入门到精通视频各类教程整理全集,包含素材、作业等(5)

PS从入门到精通视频各类教程整理全集,包含素材、作业等 最新PS以及插件合集,可在我以往文章中找到 由于阿里云盘有分享次受限制和文件大小限制,今天先分享到这里,后续持续更新 初寒调色案例及练习图 等文件 https://www.alipan.…

4.机器学习-十大算法之一线性回归算法(LinearRegression)案例讲解

机器学习-十大算法之一线性回归算法案例讲解 一摘要二个人简介三什么是线性回归四LinearRegression使用方法五糖尿病数据线性回归预测1.数据说明2.导包3.导入数据4.脱敏处理5.抽取训练数据和预测数据6.创建模型7.预测8.线性回归评估指标9.研究每个特征和标记结果之间的关系.来分…

YOLOv9改进策略 :主干优化 | 无需TokenMixer也能达成SOTA性能的极简ViT架构 | CVPR2023 RIFormer

💡💡💡本文改进内容: token mixer被验证能够大幅度提升性能,但典型的token mixer为自注意力机制,推理耗时长,计算代价大,而RIFormers是无需TokenMixer也能达成SOTA性能的极简ViT架构 ,在保证性能的同时足够轻量化。 💡💡💡RIFormerBlock引入到YOLOv9,多个数…

GIt的原理和使用(五):模拟多人协作的两种情况

目录 多人协作 多人协作一 准备工作 协作开发 多人协作二 准备工作 额外场景 申请单合并分支 更推荐写法 远程分支删除后,本地git branch -a依然能看到的解决办法 多人协作 多人协作一 目标:在远程master分支下的file.txt文件新增代码“aaa”…

基础框架SSM-----------spring篇

spring系统架构 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)!!!!!!!! IOC(Inversion of Control)控制反转------解耦合 如图使我们所熟悉的基本逻辑,在业务层中调用Dao层的对象,但是当我们Dao层进行修改的时候…

springcloud基本使用二(远程调用)

创建两个springboot maven子项目 子项目名称分别为order-server和user-server 配置user-server子项目: 所需依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependenc…

【数据结构】AVL 树

文章目录 1. AVL 树的概念2. AVL 树节点的定义3. AVL 树的插入4. AVL 树的旋转5. AVL 树的验证6. AVL 树的删除7. AVL 树的性能 前面对 map / multimap / set / multiset 进行了简单的介绍【C】map & set&#xff0c;在其文档介绍中发现&#xff0c;这几个容器有个共同点是…

【前端面试3+1】05v-if和v-show的区别、v-if和v-for能同时使用吗、Vuex是什么?【合并两个有序链表】

一、v-if和v-show的区别 v-if 和 v-show 是 Vue.js 中用来控制元素显示与隐藏的指令。 1.v-if&#xff1a; v-if 是根据表达式的真假值来决定是否渲染元素。当表达式为真时&#xff0c;元素会被渲染到 DOM 中&#xff1b;当表达式为假时&#xff0c;元素不会被渲染到 DOM 中。每…

SWM341系列SDRAM应用

SWM341系列SDRAM应用 1、不同的时钟频率下&#xff0c;SDRAM的初始化参数设置 现象&#xff1a;驱屏应用&#xff0c;显示一段时间后出现卡住的现象 分析&#xff1a;SDRAM的初始 化参数优化 主频150Mhz,建议配置CASL 3&#xff0c;TRFC ≥8。 主频100Mhz,ClkDiv可配置为1…

【记录40】echarts离散图

EchartsEvent(val, data, Ymax) {var _that this;const timestampToTime function(timestamp) {var date new Date(timestamp * 1000);//时间戳为10位需*1000&#xff0c;时间戳为13位的话不需乘1000let Y date.getFullYear() -;let M (date.getMonth()1 < 10 ? 0(da…

3、jvm基础知识(三)

如何判断堆上的对象没有被引用&#xff1f; 常见的有两种判断方法&#xff1a;引用计数法和可达性分析法。 引用计数法会为每个对象维护一个引用计数器&#xff0c;当对象被引用时加1&#xff0c;取消引用时减1。 引用计数法的优点是实现简单&#xff0c;缺点有两点&#xff1…