C++门迷宫

目录

  • 开头
  • 程序
  • 程序的流程图
  • 程序游玩的效果
  • 下一篇博客要说的东西

开头

大家好,我叫这是我58。

程序

#include <iostream>
using namespace std;
void printmaze(const char strmaze[11][11]) {int i = 0;int ia = 0;for (; i < 11; i++) {for (ia = 0; ia < 11; ia++) {cout << "\033[" << ('0' == strmaze[i][ia] ? "33" : 'G' == strmaze[i][ia] ? "32;1" : "0") << "m" << strmaze[i][ia] << "\033[0m";}cout << "|" << endl;}cout << "-----------@" << endl;
}
int main() {char strmaze[11][11] = {'P','0','*','0','*','0','0',' ','0',' ',' ',' ',' ','*',' ','*',' ',' ','0',' ',' ',' ','*','*','*',' ','*',' ','*',' ','*',' ',' ','0',' ','*',' ','*','0','*',' ',' ',' ',' ',' ',' ','*',' ',' ',' ','0','*','*','*',' ',' ','0','*',' ','0','0',' ','*',' ','*','*',' ',' ','*','*',' ',' ','0','*','*','*','0',' ',' ','*','0','*',' ',' ','*',' ',' ',' ','0',' ','*',' ','*',' ','*',' ',' ','*','0',' ',' ','*',' ','*','*','*','0',' ','*',' ',' ',' ','*',' ',' ','0',' ',' ',' ','*','G',};char* cp = &strmaze[0][0];char ch = 0;int i = 0;bool bpw = 0;int doorarr[36] = {0,1,3,0,5,1,0,8,8,0,0,3,3,5,4,6,1,7,0,5,0,6,6,6,5,5,9,7,6,10,8,10,5,4,7,3};cout << "欢迎你来玩这个\033[33m门\033[0m迷宫,在这个迷宫中,“P”是你,“*”是墙,你不能走到这,空格是你可以走的地方,“w”使你上移,“a”使你左移,“s”使你下移,“d”使你右移,而\033[32;1m“G”\033[0m是\033[32;1m终点\033[0m,走到这能让你\033[32;1m胜利\033[0m,并且,\033[33m“0”\033[0m是\033[33m门\033[0m,按“\033[33mz\033[0m”键进入就可以走到\033[33m另外一扇门\033[0m的前面。这就是这迷宫的规则,你听明白了吗?" << endl << endl;system("pause");system("cls");while ('G' == strmaze[10][10]) {int ix = (cp - &strmaze[0][0]) / 11;int iy = (cp - &strmaze[0][0]) % 11;printmaze(strmaze);cin >> ch;rewind(stdin);*cp = ' ';switch (ch) {case 'w':ix && '*' != *(cp - 11) && '0' != *(cp - 11) && (cp -= 11);bpw = 1;break;case 'a':iy && '*' != *(cp - 1) && '0' != *(cp - 1) && (cp--);bpw = 0;break;case 's':10 != ix && '*' != *(cp + 11) && '0' != *(cp + 11) && (cp += 11);bpw = 0;break;case 'd':10 != iy && '*' != *(cp + 1) && '0' != *(cp + 1) && (cp++);bpw = 0;break;case 'z':if (bpw) {for (i = 0; i < 36; i += 2) {if (ix - 1 == doorarr[i] && iy == doorarr[i + 1]) {if (i / 2 % 2) {cp = &strmaze[doorarr[i - 2] + 1][doorarr[i - 1]];}else {cp = &strmaze[doorarr[i + 2] + 1][doorarr[i + 3]];}}}}break;default:break;}*cp = 'P';system("cls");}system("color 0A");cout << "恭喜你,你赢了" << endl;return 0;
}

程序的流程图

开始
导入io流
释放std作用域下的全部东西
定义printmaze函数
把二维字符数组strmaze初始化为下面的图片

等待用户按下任意一个键,按下后就清屏
break
清屏
break
break
break
否(break)
否(break)
否(break)
定义字符指针cp为二维字符数组strmaze第0行第0列的地址
定义字符ch为0
定义整型i为0
定义布尔型bpw为0
把有36个元素的整型数组doorarr里的元素分别为初始化为0,1,3,0,5,1,0,8,8,0,0,3,3,5,4,6,1,7,0,5,0,6,6,6,5,5,9,7,6,10,8,10,5,4,7和3
输出“欢迎你来玩这个\​033[33m门\​033[0m迷宫,在这个迷宫中,“P”是你,“*”是墙,你不能走到这,空格是你可以走的地方,“w”使你上移,“a”使你左移,“s”使你下移,“d”使你右移,而\​033[32;1m“G”\​033[0m是\​033[32;1m终点\​033[0m,走到这能让你\​033[32;1m胜利\​033[0m,并且,\​033[33m“0”\​033[0m是\​033[33m门\​033[0m,按“\​033[33mz\​033[0m”键进入就可以走到\​033[33m另外一扇门\​033[0m的前面。这就是这迷宫的规则,你听明白了吗?\​n\​n”
'G' == strmaze[10][10]?
定义整型ix为cp与二维字符数组strmaze第0行第0列的地址之间的元素个数除以11的结果
定义整型iy为cp与二维字符数组strmaze第0行第0列的地址之间的元素个数模上11的结果
执行printmaze函数,参数有二维字符数组strmaze
把ch设为你输入的字符
清空缓冲区
把解引用的cp设为空格
'w' == ch?
ix && '*' != *(cp - 11) && '0' != *(cp - 11)?
把cp向左移动11位
把bpw设为1
把解引用的cp设为字符“P”
把背景色设为黑色,前景色设为淡绿色
输出“恭喜你,你赢了\​n”
结束
'a' == ch?
iy && '*' != *(cp - 1) && '0' != *(cp - 1)?
把cp向左移动一位
把bpw设为0
's' == ch?
10 != ix && '*' != *(cp + 11) && '0' != *(cp + 11)?
把cp向右移动11位
把bpw设为0
'd' == ch?
10 != iy && '*' != *(cp + 1) && '0' != *(cp + 1)?
把cp向右移动一位
把bpw设为0
'z' == ch?
bpw?
设i为0
i < 36?
ix - 1 == doorarr[i] && iy == doorarr[i + 1]?
i / 2 % 2?
把cp设为二维字符数组strmaze第整型数组doorarr的第i减2项加1的值行第整型数组doorarr的第i减1项的值列的地址
i自增2
把cp设为二维字符数组strmaze第整型数组doorarr的第i加2项加1的值行第整型数组doorarr的第i加3项的值列的地址
printmaze函数
结束
开始
定义整型i为0
定义整型ia为0
i < 11?
设ia为0
ia < 11?
前面输出“\​033[”,如果“0”为二维字符数组strmaze第i行第ia列的元素,那么中间输出“33”,否则如果“G”为二维字符数组strmaze第i行第ia列的元素,那么中间就输出“32;1”,否则中间就输出“0”,后面则输出“m”,二维字符数组strmaze第i行第ia列的元素和“\​033[0m”
ia自增1
输出“|\​n”
i自增1
输出“-----------@\​n”

程序游玩的效果

门迷宫

下一篇博客要说的东西

C++两点成一线

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

nvm 下载node报错:Could not retrieve https://nodejs.org/dist/index.json.

报错信息&#xff1a;Could not retrieve https://nodejs.org/dist/index.json. Get "https://nodejs.org/dist/index.json": dial tcp 104.20.23.46:443: i/o timeout 这是因为node源都是国外的服务&#xff0c;连接超时&#xff0c;所以我们把node源设置为国内的镜…

YOLOv8改进 | 自定义数据集训练 | AirNet助力YOLOv8检测

目录 一、本文介绍 二、AirNet原理介绍 2.1 对比基降解编码器&#xff08;CBDE&#xff09; 2.2 降解引导修复网络&#xff08;DGRN&#xff09; 三、yolov8与AirNet结合修改教程 3.1 核心代码文件的创建与添加 3.1.1 AirNet.py文件添加 3.1.2 __init__.py文件添加 3…

Android Studio 开发快速获取开发版和发布版SHA1和MD5

本文讲解Android Studio 开发中如何快速获取开发版和发布版SHA1和MD5。 一、获取开发版: 点击Android Studio右上角Gradle按钮,打开Gradle视图 找到项目-Tasks-signingReport 双击即可AndroidStudio底部 Run面板获取开发版SHA1和MD5 二、获取发布版:

【Python深度学习系列】基于Flask将深度学习模型部署到web应用上(完整案例)

这是我的第356篇原创文章。 一、引言 使用 Flask 在 10 分钟内将您自己训练的模型或预训练的模型&#xff08;VGG、ResNet、Densenet&#xff09;部署到网络应用程序中。以图像分类模型为例&#xff0c;本地直接部署和本地使用docker部署两种方式实现。 二、实现过程 2.1 准备…

go webapi上传文件

一、导入依赖 import "net/http" 我这里用到了Guid所以安装依赖 go get github.com/google/uuid 二、main.go package mainimport ("fmt""github.com/jmoiron/sqlx""github.com/tealeg/xlsx""log""path/filepath&q…

深度学习的新突破:Difformer模型

人工智能咨询培训老师叶梓 转载标明出处 在现实世界中&#xff0c;数据之间的复杂相互依赖性是一个普遍存在的现象。这种错综复杂的依赖关系&#xff0c;对于传统的机器学习算法来说&#xff0c;是一个巨大的挑战。因为它们通常假设数据是独立同分布的&#xff0c;这使得算法难…

JS在线加密解密工具

快捷工具网得JS加密解密工具为您提供JS加密解密,js加解密工具,JS在线加解密,JS代码在线加解密,该工具基于eval方法的加密与解密功能&#xff0c;用户可将js代码加密成eval方法执行形式的代码&#xff0c;也可将eval方法加密过的代码进行解密操作。是一款非常简便实用的在线Java…

AC自动机详解,原理、优化分析,代码实现

零、前言 对于模式串匹配问题&#xff0c;在很多基础的数据结构课程中都有涉及到&#xff0c;如 KMP 算法&#xff0c;BM算法&#xff0c;Trie。 但是给定文本串&#xff0c;我们有多个模式串要去查询。难道要多次调用KMP / BM&#xff0c;或者在Trie上多次查询吗&#xff1f…

2024 研究生数学建模竞赛(F题)建模秘籍|X射线脉冲星光子到达时间建模|文章代码思路大全

铛铛&#xff01;小秘籍来咯&#xff01; 小秘籍团队独辟蹊径&#xff0c;运用轨道动力学模型&#xff0c;脉冲轮廓折叠&#xff0c;几何传播时延模型&#xff0c;相对论修正计算&#xff0c;泊松分布模拟等强大工具&#xff0c;构建了这一题的详细解答哦&#xff01; 为大家量…

数据预处理方法—数据标准化和数据归一化

1.数据标准化 1.1 概念&#xff1a; 标准化是将数据转化为均值为0&#xff0c;标准差为1的分布。通过标准化处理&#xff0c;所有特征在同一个尺度上&#xff0c;使得模型更加稳定和高效&#xff0c;尤其适用于正态&#xff08;高斯&#xff09;分布的数据。 1.2 原理 标准化…

【HTTP】构造HTTP请求和状态码

状态码 用于响应中&#xff0c;表示响应的结果如何 正确&#xff1f;错误&#xff1f;什么原因&#xff1f; HTTP 中的状态码都是标准约定好的 200 OK 成功了&#xff0c;一切顺利 在抓包到的响应中 404 Not Found 访问的资源&#xff08;URL 中的路径&#xff09;没找…

【已解决】编译报错:fatal error: Eigen/Core: 没有那个文件或目录 #include <Eigen/Core>

1、如果没有安装过Eigen&#xff0c;可以使用以下git指令进行下载&#xff0c;或者也可以通过以下网址下载 git clone https://gitlab.com/libeigen/eigen.git网址1&#xff1a;https://eigen.tuxfamily.org/index.php?titleMain_Page 网址2: https://gitlab.com/libeigen/ei…

BeautifulSoup与lxml解析网页:技术详解与实战案例

目录 一、引言 1.1 网页解析的重要性 1.2 BeautifulSoup与lxml简介 二、安装BeautifulSoup和lxml 三、BeautifulSoup基础 3.1 创建BeautifulSoup对象 3.2 基本元素 3.3 遍历和搜索文档树 3.4 CSS选择器 四、lxml基础 4.1 解析HTML 4.2 XPath选择器 4.3 CSS选择器 …

简单多状态dp第二弹 leetcode -删除并获得点数 -粉刷房子

740. 删除并获得点数 删除并获得点数 分析: 使用动态规划解决 这道题依旧是 打家劫舍I 问题的变型。 我们注意到题目描述&#xff0c;选择 x 数字的时候&#xff0c; x - 1 与 x 1 是不能被选择的。像不像 打家劫舍 问题中&#xff0c;选择 i 位置的金额之后&#xff0c;就不…

C++速通LeetCode中等第20题-随机链表的复制(三步简单图解)

方法图解&#xff1a; class Solution { public:Node* copyRandomList(Node* head) {if ( !head ) {return nullptr;}Node *cur head;// 1. 在原节点的每个节点后创建一个节点while ( cur ) {Node *newNode new Node(cur -> val);newNode -> next cur -> next;cur …

大小端字节序 和 内存高低地址顺序

目录 1. 大小端字节序 1.1 什么是大小端字节序&#xff1f; 1.2 为什么有大小端字节序? 1.3 习题&#xff1a;用程序结果判断大端小端 2. 各种易混淆的高低地址顺序 2.1 监视窗口的地址表示【计算机标准展示方式】 2.2 横向地址表示 2.3 一个字节 与 多个字节 的地址…

g1:基于 Llama,用提示工程实现类似 o1 的深度推理

开源项目 g1 利用巧妙的提示策略&#xff0c;在 Groq 硬件上使用 Llama-3.1 70b 模型实现了类似 OpenAI o1 的推理链能力。g1 将推理过程可视化&#xff0c;并结合多种技巧引导 LLM 进行深度思考&#xff0c;显著提升了其在逻辑问题上的准确率&#xff0c;为 LLM 推理能力的提升…

Win10 安装Node.js 以及 Vue项目的创建

一、Node.js和Vue介绍 1. Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它允许你在服务器端运行 JavaScript&#xff0c;使得你能够使用 JavaScript 来编写后端代码。以下是 Node.js 的一些关键特点&#xff1a; 事件驱动和非阻塞 I/O&#xff1a;Node…

【24华为杯数模研赛赛题思路已出】国赛F题第二套思路丨附参考代码丨免费分享

2024年数模研赛E题解题思路 X 射线脉冲星光子到达时间建模思路分析 该题目是天文学背景的数学建模题目&#xff0c;其涉及到物理学中关于光线传播过程受多种因素的共同干扰的复合模型&#xff0c;以及天体和卫星的坐标变换和运动模型&#xff0c;首先我们要&#xff0c;建立卫…

JavaScript使用leaflet库显示信息窗口

前言 我们可千万不能忘记我们之前花的流程图哦&#xff0c;我们所有的计划都按照我们的流程图来去构建&#xff1b; 我们已经完成了&#xff0c;页面的加载&#xff0c;也已经完成获取用户当前的位置坐标&#xff0c;并且我们通过地图的API将当前的位置在地图中渲染出来&…