C++3D迷宫

目录

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

开头

大家好,我叫这是我58。

程序

#include <iostream>
using namespace std;
void printmaze(char strmaze[5][5][5]) {cout << "-----@" << endl;int i = 0;int ia = 0;int ib = 0;for (; i < 5; i++) {for (ia = 0; ia < 5; ia++) {for (ib = 0; ib < 5; ib++) {cout << "\033[" << ('G' == strmaze[i][ia][ib] ? "32;1" : "0") << "m" << strmaze[i][ia][ib] << "\033[0m";}cout << "|" << endl;}cout << "-----@" << endl;}
}
int main() {char strmaze[5][5][5] = {'P','*',' ','*','*','*',' ',' ',' ','*',' ',' ','*',' ',' ',' ','*','*','*',' ',' ',' ','*',' ',' ',' ',' ','*',' ',' ',' ','*',' ','*',' ','*','*','*','*','*',' ',' ','*',' ',' ',' ',' ','*',' ',' ','*',' ',' ','*',' ','*',' ','*',' ',' ',' ','*',' ','*','*',' ',' ','*',' ',' ',' ',' ','*',' ',' ','*','*',' ',' ',' ',' ',' ','*','*',' ',' ',' ','*',' ','*',' ',' ','*',' ',' ',' ',' ','*','*',' ','*','*',' ',' ',' ','*',' ',' ',' ',' ',' ','*','*',' ','*',' ',' ','*','*','*',' ','*',' ',' ','G',};char* cp = &strmaze[0][0][0];char ch = 0;cout << "欢迎你来玩这个3D迷宫,在这个迷宫中,“P”是你,“*”是墙,空格是你可以走的地方,而\033[32;1m“G”\033[0m是\033[32;1m终点\033[0m,走到这就能让你胜利了,并且,按“w”能使你往上移,按“a”能使你往左移,按“s”能使你往下移,按“d”能使你往右移,按“q”能使你上一层,按“e”能使你下一层。这就是这迷宫的规则,你听明白了吗?" << endl << endl;system("pause");system("cls");while ('G' == strmaze[4][4][4]) {int ix = (cp - &strmaze[0][0][0]) / 25;int iy = (cp - &strmaze[0][0][0]) / 5 % 5;int iz = (cp - &strmaze[0][0][0]) % 5;printmaze(strmaze);cin >> ch;rewind(stdin);*cp = ' ';switch (ch) {case 'w':iy && '*' != *(cp - 5) && (cp -= 5);break;case 'a':iz && '*' != *(cp - 1) && (cp--);break;case 's':4 != iy && '*' != *(cp + 5) && (cp += 5);break;case 'd':4 != iz && '*' != *(cp + 1) && (cp++);break;case 'q':ix && '*' != *(cp - 25) && (cp -= 25);break;case 'e':4 != ix && '*' != *(cp + 25) && (cp += 25);break;default:break;}*cp = 'P';system("cls");}system("color 0A");cout << "恭喜你,你赢了" << endl;return 0;
}

程序的流程图

开始
定义pritmaze函数
把三维字符数组strmaze初始化为下面的图片

等待用户按下任意一个键,按下后就清屏
break
清屏
break
break
break
break
break
否(break)
否(break)
否(break)
否(break)
否(break)
否(break)
否(break)
定义字符指针cp为三维字符数组strmaze第0层第0行第0列的地址
定义字符ch为0
输出“欢迎你来玩这个3D迷宫,在这个迷宫中,“P”是你,“*”是墙,空格是你可以走的地方,而\​033[32;1m“G”\​033[0m是\​033[32;1m终点\​033[0m,走到这就能让你胜利了,并且,按“w”能使你往上移,按“a”能使你往左移,按“s”能使你往下移,按“d”能使你往右移,按“q”能使你上一层,按“e”能使你下一层。这就是这迷宫的规则,你听明白了吗?\​n\​n”
'G' == strmaze[4][4][4]?
定义整型ix为cp与三维字符数组strmaze第0层第0行第0列的地址之间的元素个数除以25的结果
定义整型iy为cp与三维字符数组strmaze第0层第0行第0列的地址之间的元素个数除以5模5的结果
定义整型iy为cp与三维字符数组strmaze第0层第0行第0列的地址之间的元素个数模5的结果
执行pritmaze函数,参数有三维字符数组strmaze
把ch设为你输入的字符
清空缓冲区
把解引用的cp设为空格
'w' == ch?
iy && '*' != *(cp - 5)?
把cp向左移动5位
把解引用的cp设为字符“P”
把背景色设为黑色,前景色设为淡绿色
输出“恭喜你,你赢了\​n”
结束
'a' == ch?
iz && '*' != *(cp - 1)?
把cp向左移动一位
's' == ch?
4 != iy && '*' != *(cp + 5)?
把cp向右移动5位
'd' == ch?
4 != iz && '*' != *(cp + 1)?
把cp向右移动一位
'q' == ch?
ix && '*' != *(cp - 25)?
把cp向左移动25位
'e' == ch?
4 != ix && '*' != *(cp + 25)?
把cp向右移动25位
printmaze函数
结束
开始
输出“-----@\​n”
定义整型i为0
定义整型ia为0
定义整型ib为0
i < 5?
设ia为0
ia < 5?
设ib为0
ib < 5?
如果字符“G”为三维字符数组strmaze第i层第ia行第ib列的元素,那么就输出“\​033[32;1m”,三维字符数组strmaze第i层第ia行第ib列的元素和“\​033[0m”,否则输出“\​033[0m”,三维字符数组strmaze第i层第ia行第ib列的元素和“\​033[0m”
ib自增1
输出“|\​n”
ia自增1
输出“-----@\​n”
i自增1

程序游玩的效果

3D迷宫

下一篇博客要说的东西

C++掉血迷宫

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

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

相关文章

Java后端框架---Spring

目录 一.Spring是什么&#xff1f; 二.Spring Hello World 搭建 三.XML配置bean管理 1.bean标签 2.依赖注入 3.依赖注入的补充 四.注解配置bean管理 1.开启注解扫描 2.使用注解对类进行配置 3.自动注入 五.面向切面编程AOP 1.概述 2.通知 六.spring事务管理 1.数据库…

网络原理(3)—— 应用层、传输层(TCP)

1. 应用层 日常开发中最常用到的一层&#xff0c;主要涉及到两种情况&#xff1a; 1) 使用现成的应用层协议 2) 自己定义应用层协议 1.1 自定义应用层协议的流程 1. 明确前后端交互过程中需要传递哪些信息 实例&#xff1a;开发一个外卖软件 打开软件&#xff0c;首先需要展…

Linux 文件 IO 管理(第一讲)

Linux 文件 IO 管理&#xff08;第一讲&#xff09; 回顾 C 语言文件操作&#xff0c;提炼理解新创建的文件为什么被放在可执行文件的同级目录下&#xff1f;上述 log.txt 何时被创建&#xff1f;又是谁在打开它&#xff1f;那文件没有被打开的时候在哪里&#xff1f;一个进程可…

css 个人喜欢的样式 速查笔记

起因&#xff0c; 目的: 记录自己喜欢的&#xff0c; 觉得比较好看的 css. 下次用的时候&#xff0c;直接复制&#xff0c;很方便。 1. 个人 html 模板&#xff0c; 导入常用的 link 设置英语字体: Noto导入默认的 css使用网络 icon 图标导入 Bootstrap css 框架 html <…

【Python】谷歌浏览器总是自动更新,使用selenium跟chromedriver版本不匹配怎么办?

我发现&#xff0c;我的电脑对谷歌浏览器的禁止自动更新无效&#xff0c;哪怕是在任务计划程序里&#xff0c;禁止谷歌浏览器更新&#xff0c;也没有用。而且有时候点开右上角的三个点&#xff0c;也会自动更新版本。 但是往往chromedriver的更新版本更不上浏览器的版本哇&…

RPC远程调用的序列化框架

序列化框架对比&#xff1a; 一、Java Serialiazer 字段serialVersionUID的作用是为了在序列化时保持版本的兼容性&#xff0c;即版本升级时反序列化仍保持对象的唯一性。 //序列化 ByteArrayOutputStream bout new ByteArrayOutputStream(); ObjectOutoutStream out new O…

测试-Gatling 与性能测试

Gatling 与性能测试详解 一、什么是性能测试&#xff1f; 性能测试是一种软件测试类型&#xff0c;旨在评估系统在负载下的响应时间、吞吐量和资源利用率等性能指标。通过性能测试&#xff0c;开发者和运维团队能够识别出系统的瓶颈、优化系统性能&#xff0c;并确保其在实际…

使用kkFileView的几个问题

经测试&#xff0c;可以正常的预览&#xff1a;pdf&#xff0c;png&#xff0c;pptx&#xff0c;psd&#xff0c;zip&#xff0c;word&#xff0c;dcm(医学片子 dr ct等) 部署发布&#xff08;Linux&#xff09; 一、上传到服务器 上传jar包&#xff08;或者官方社区提供的包…

【Linux】精通GDB:打造你的Linux调试超能力

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;C从入门到精通 目录 一&#xff1a; &#x1f525; 什么是GDB / CGDB 二&#xff1a; &#x1f525; CGDB的安装 &#x1f34a; Linux-centos 三&#xff1a; &#x1f525; cgdb的使用背景 &#…

深度剖析iOS渲染

iOS App 图形图像渲染的基本流程&#xff1a; 1.CPU&#xff1a;完成对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码、图像的绘制。 2.GPU&#xff1a;GPU拿到CPU计算好的显示内容&#xff0c;完成纹理的渲染&#xff0c; 渲染完成后将渲…

界面控件DevExpress中文教程:如何PDF图形对象的可见性?

DevExpress拥有.NET开发需要的所有平台控件&#xff0c;包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress 近期重要版本v24.1已正式发布&#xff0c;该版本拥有众多新产…

STM32与ESP8266的使用

串口透传 “透传”通常指的是数据的透明传输&#xff0c;意思是在不对数据进行任何处理或修改的情况下&#xff0c;将数据从一个接口转发到另一个接口。值得注意的是要避免串口之间无限制的透明&#xff0c;可以采用互斥锁的方式进行限制使用方法 对USART1和USART3(用他俩举例…

word文档无损原样转pdf在windows平台使用python调用win32com使用pip安装pywin32

前提&#xff1a; windows环境下&#xff0c;并且安装了office套装&#xff0c;比如word,如果需要调用excel.也需要安装。在另外的文章会介绍。这种是直接调用word的。所以还原度会比较高。 需求&#xff1a; word文档转pdf,要求使用命令行形式&#xff0c;最终发布为api接口…

基于高通主板的ARM架构服务器

一、ARM架构服务器的崛起 &#xff08;一&#xff09;市场需求推动 消费市场寒冬&#xff0c;全球消费电子需求下行&#xff0c;服务器成半导体核心动力之一。Arm 加速布局服务器领域&#xff0c;如 9 月推出 Neoverse V2。长久以来&#xff0c;x86 架构主导服务器市场&#…

QTreeView模糊查询

本文代码效果如下&#xff1a; 本文代码&#xff1a; https://download.csdn.net/download/Sakuya__/89759410https://download.csdn.net/download/Sakuya__/89759410 代码之路 MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #incl…

基于Ant-Design-Vue设计的配置化表单

适用vue 3.4 版本以上 在日常的前端开发中&#xff0c;表单开发必不可少&#xff0c;尤其是在遇到一些大型的复杂的表单&#xff0c;这往往会变成一个痛点。于是就想着开发一个可以list来配置的表单组件。 先上组件代码 <!-- 该组件 VUE 版本在 3.4 以上可使用--> <…

【QT】定时器使用

文章目录 关于 Qt 定时器使用的注意细节总结实例-检查工具使用周期时间是否合理UI设计头文件 remind.h源文件 remind.cpp实现效果 关于 Qt 定时器使用的注意细节总结 一、创建与初始化 使用 QTimer 类来创建定时器。可以在构造函数中指定父对象&#xff0c;确保定时器在正确的…

JavaDS —— B树

前言 本章节将带领大家进入B树的学习&#xff0c;主要介绍B树的概念和B树的插入代码的实现&#xff0c;删除代码不做讲解&#xff0c;最后简单介绍B树和B*树。 B树的概念 1970年&#xff0c;R.Bayer和E.mccreight提出了一种适合外查找的树&#xff0c;它是一种平衡的多叉树&…

【制作100个unity游戏之32】unity开发属于自己的一个2d/3d桌面宠物,可以实时计算已经获取的工资

最终效果 文章目录 最终效果一、实现Windows消息弹窗二、将窗口扩展到工作区三、穿透能点击到其他区域四、模型交互1、我们可以新增ObjectDrag 代码控制人物拖拖动2、实现模型交互五、最终代码六、其他七、游玩地址七、源码参考完结一、实现Windows消息弹窗 参考:https://lear…

WEB打点

目录 web打点概述打点流程打点中的问题getshell手法汇总web打点批量检测端口扫描POC扫描指纹识别漏洞扫描 手工检测开源框架漏洞通用框架漏洞基础web漏洞商用系统漏洞 WAF绕过waf分类常见waf拦截界面WAF绕过思路侧面绕&#xff1a;适合云WAF直面WAF web打点概述 打点流程 资产…