当前位置: 首页 > news >正文

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.lryc.cn/news/443669.html

相关文章:

  • 用最通俗易懂的语言和例子讲解三维点云
  • VM虚拟机下载以及激活
  • 详解Ajax与axios的区别
  • golang学习笔记28——golang中实现多态与面向对象
  • 运行 xxxxApplication 时出错。命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行。
  • k8s自动清理pod脚本分享
  • Go并发编程的高级技巧——请求复制与限流
  • 网站建设模板选择哪种
  • 【linux】kill命令
  • Python基础 | 在虚拟环境中安装并在指定文件夹中打开Jupyter notebook
  • 1.Spring-容器-注册
  • Mapper.xml SQL大于小于号转义符
  • Linux:进程(三)——进程状态
  • Effective Java 学习笔记 如何为方法编写文档
  • TCP四大拥塞控制算法总结
  • 深入解析ElasticSearch从基础概念到性能优化指南
  • git分支合并时忽略指定文件
  • 基于微信小程序的童装商城的设计与实现+ssm(lw+演示+源码+运行)
  • 什么叫后验分布
  • Godot游戏如何提升触感体验
  • 数字图像面积计算一般方法及MATLAB实现
  • 【STL】 set 与 multiset:基础、操作与应用
  • xhs 小红书 x-s web 分析
  • 胤娲科技:谷歌DeepMind祭出蛋白质设计新AI——癌症治疗迎来曙光
  • 【后端】【nginx】nginx常用命令
  • MATLAB系列08:输入/输入函数
  • 《财富之眼:用经济思维看清世界》pdf电子书下载
  • QT中文乱码
  • 如何安装1Panel面板并架设一个静态网站
  • craco-less使用问题