菜单

news/2025/1/7 2:20:50/文章来源:https://www.cnblogs.com/EricsT/p/18653190

准备写一个基于C的扫雷游戏,这是第一篇,内容:扫雷的主菜单

思路

显示菜单->用户选择->判断用户选项

实现

显示菜单

首先在main函数内显示菜单,菜单显示部分实现在 MainMenu 函数内

int main(void)
{while (true){int iChoose = -1;MainMenu();//加载菜单}
}

菜单实现

菜单提供给用户三个选项:

1、开始游戏

2、游戏帮助

3、退出

此处,设定用户选择 1 是开始游戏,用户选择 2 是游戏帮助,用户选择 0 是退出游戏,具体实现如下:

用户选择

显示完菜单之后喊用户输入选项,并将用户的选择保存在 iChoose 中,方便后续进行判断

int main(void)
{while (true){...printf("please input your choose:");//请输入你的选择scanf("%d", &iChoose);//获取iChoose}
}

判断用户的选择

在实现菜单时,设置用户选择 0 时退出游戏,用户选择 1 开始游戏,用户选择 2 游戏帮助,其他选项则无效,故而按照此思路进行判断

用户选择 0

此时退出游戏

int main(void)
{while (true){...//退出if (0 == iChoose){printf("\n\nExiting the game, please wait!\n");//正在退出游戏,请稍等Sleep(100);break;}}
}

用户选择 2

此时显示游戏帮助,由于在 iChoose 为 0 分支内,采用了 break 语句跳出循环,故在此分支内依旧用 if 判断,而不采用 else if 判断

int main(void)
{while (true){...//帮助if (2 == iChoose){printf("\n\nThe game has primary, intermediate, advanced and custom modes\n");printf("A certain number of mines are randomly arranged in the minefield\n");printf("The player needs to find all the blocks that are not mines as soon as possible, but do not step on the mines.\n\n\n");Sleep(2000);continue;}}
}

用户选择其他选项

此时为无效输入,由于在 iChoose 为 2 分支内,采用了 continue 语句来结束此次循环,进入下一次循环,故在此分支内依旧用 if 判断,而不采用 else if 判断

int main(void)
{while (true){...//无效输入if (iChoose > 2){printf("\n\nInvalid input\n\n");//输入无效Sleep(500);continue;}}
}

用户选择 1

此时开始游戏,以上分支均未跑到的话,那用户就是选择 1 了,此处无需判断,直接实现

此处将游戏部分封装在了 Play 函数内,直接调用,调用结束后代表游戏结束,随即询问用户是否再来一局:

如若不来,则退出循环,再在外层循环判断一下,进而退出外层循环

如若需要再来一局,则继续循环,调用 Play 函数,进行游戏

int main(void)
{...int iiChoose;//游戏while (true){//PlayMenu();//无等级选择,故无此函数Play();printf("Do you want another game? 1 Yes, other no");//是否再来一局,1是,其他否scanf("%d", &iiChoose);if (1 != iiChoose)break;}if (1 != iiChoose)break;}
}

完整代码

见网盘

扫雷 https://www.alipan.com/s/yVJb2bBk1yj 提取码: 33jm 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

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

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

相关文章

如何解决数据库扩容后宝塔面板显示旧容量的问题?

当您完成数据库扩容后,发现宝塔面板仍然显示旧的容量,这可能是由于系统未能及时刷新磁盘信息或配置文件未更新所致。为了确保宝塔面板正确显示新的磁盘容量,请参考以下详细步骤进行处理:确认磁盘扩容成功:首先,确保磁盘扩容操作已经成功完成。可以通过命令行工具如lsblk或…

20241312《计算机基础与程序设计》课程总结

20241312《计算机基础与程序设计》课程总结 第一周作业: 简要内容:①课程概论②工业革命与浪潮之巅③信息与信息安全④计算机系统概论⑤计算机安全⑥计算的限制⑦计算思维 二维码: 第三周作业: 简要内容:①数字分类与计数法 ②位置计数法③进制转换④模拟数据与数字数据⑤…

云服务器根目录扩容后磁盘空间未增加

问题描述: 我已经升级了云服务器的配置,但根目录的空间大小并未增加。请帮我检查并解决这个问题。 详情回答: 您好!感谢您使用我们的云服务器服务。根据您的描述,您已经升级了云服务器的配置,但根目录的空间大小并未增加。这种情况通常是由于磁盘挂载或分区设置不当引起的…

如何解决BT面板无法登录的问题?

当您遇到无法登录BT面板的情况时,可能是由多种原因引起的。以下是一些常见的排查步骤和解决方案,帮助您快速解决问题:检查用户名和密码:首先,确认您使用的用户名和密码是否正确。默认情况下,BT面板的登录用户名通常是 admin 或 cp,密码则是您在安装时设置的初始密码。如…

响应式设计进阶 - 修改网站手机版模板的实用方法与技巧

随着移动设备使用的增加,确保网站在小屏幕设备上有良好的用户体验变得至关重要。以下是关于如何修改网站手机版模板的一些基本指导和高级技巧:理解响应式设计理念响应式设计是一种使网页能够在不同设备上自适应的技术。它通过使用流式网格布局、弹性图片和媒体查询等手段,确…

Mingw64下载及各版本区别

地址:https://github.com/niXman/mingw-builds-binaries/releases 一般来说下这个就行

2025.1.5

Buy One, Get One Free 题解Buy One, Get One Free 题解One Last Kiss & Beautiful World 初めてのルーブルは なんてことはなかったわ 私だけのモナリザ もうとっくに出会ってたから 初めてあなたを見た あの日動き出した歯車 止められない喪失の予感 もういっぱいあるけれ…

如何删除不必要的DNS记录?

用户在管理域名解析时,遇到了一些不再需要的DNS记录,如TXT记录或CNAME记录,不确定是否可以删除这些记录。用户希望了解如何安全地删除这些记录,以及删除后是否会影响现有服务。 解决方案:问题 解决方案删除不必要的DNS记录 在确认不再需要特定DNS记录后,可以直接在域名解…

如何解决网站无法打开的问题

用户反馈其网站无法正常访问,具体表现为浏览器提示错误信息或页面加载失败。用户尝试了清除缓存、更换浏览器等操作,但问题依旧存在。 解决方案: 当遇到网站无法打开的情况时,首先需要确认是服务器端问题还是客户端问题。以下是详细的排查步骤:检查域名解析:确保域名正确…

20241309《计算机基础与程序设计》课程总结

目录 -第0周作业 -第1周作业 -第2周作业 -第3周作业 -第4周作业 -第5周作业 -第6周作业 -第7周作业 -第8周作业 -第9周作业 -第10周作业 -第11周作业 -第12周作业 -第13周作业 -第14周作业 每周作业链接汇总 第0周作业 自我介绍第1周作业 参考 基于VirtualBox虚拟机安装Ubuntu图…

升级服务器数据盘大小、内存和CPU是否会丢失数据

用户计划升级服务器的数据盘大小、内存和CPU,但担心这些操作会导致现有数据丢失。特别是对于网站程序和数据库文件的安全性表示担忧。 解决方案:问题 解决方案升级数据盘是否会丢失数据 正常情况下,升级数据盘不会导致数据丢失。只要按照正确步骤操作,原有数据将保持完整。…

网站突然无法正常访问的原因及应对措施

当您的网站突然无法正常访问时,首先要保持冷静,然后按照以下步骤逐步排查问题所在: 1. 检查网络连接 使用命令行工具(如Windows下的CMD或Mac/Linux下的终端)运行ping命令,测试从本地计算机到目标域名的连通性。例如:bashping www.example.com观察返回的结果,判断是否存…