C++黑暗迷宫-程序的流程图时间:2024-10-03 17:28:40 开始 导入io流 导入cstdlib头文件 导入ctime头文件 定义near结构体,成员变量有整型i,整型ia,整型ix,整型iy和整型iwalk 定义printnexto函数 把随机数的种子设为现在的时间戳 把结构体near变量n的前两个成员变量分别初始化为随机数模30加1的结果和另一个随机数模30加1的结果 把有32行32列的二维字符数组strmaze初始化为下面的图片 是 否 是 否(清屏) 是 是 是 break 清屏 否 否 是 是 break 否 是 是 break 否 是 是 break 否(break) 否(break) 否(break) 否(break) 否(break) 定义字符ca为0 把二维字符数组strmaze第结构体near变量n的成员变量i的值行第结构体near变量n的成员变量ia的值列的元素设为字符“P” 定义字符指针cp二维字符数组strmaze第结构体near变量n的成员变量i的值行第结构体near变量n的成员变量ia的值列的元素的地址 'P' == strmaze[n.i = rand() % 30 + 1][n.ia = rand() % 30 + 1]? 定义字符ch为0 输出“欢迎你来玩这个\033[7m黑暗\033[0m迷宫,在这个迷宫中,“P”是你,“*”是墙,你不能走到这,空格是你可以走的地方,“w”上移,“a”左移,“s”下移,“d”右移,而\033[32;1m“G”\033[0m是\033[32;1m终点\033[0m,走到这能让你\033[32;1m胜利\033[0m,并且,\033[4m在这个迷宫中你的出生点与\033[32;1m“G”终点\033[0;4m是随机指定的\033[0m,\033[4m而你的可视范围是以你为中心点的3*3的方块\033[0m。其中,这迷宫游戏有\033[32;1m两个\033[31m模式\033[0m,\033[32;1m一个模式是简单模式\033[0m,以\033[32;1m这个模式开始游戏就会给你提供一些\033[4m增益\033[0m:如果\033[32;1m终点“G”\033[0m的X坐标与你的X坐标相等,或者\033[32;1m终点“G”\033[0m的Y坐标与你的Y坐标相等,那么你就会变\033[32m绿\033[0m,\033[31m另一个模式是困难模式,\033[4m没有任何的增益,全靠找。\033[0m这就是这迷宫的规则,你听明白了吗?\n\n**************\n* \033[32;1m0.简单模式\033[0m *\n* \033[31m1.困难模式\033[0m *\n**************\n” 把ca设为你输入的字符 '0' != ca && '1' != ca? 输出“\033[31;1m输入错误,请重新输入 ->\033[0m” 清空缓冲区 把ca设为你输入的字符 'G' == strmaze[n.i][n.ia]? 把结构体near变量n的成员变量ix设为cp与二维字符数组strmaze第0行第0列的地址之间的元素个数除以32的结果 把结构体near变量n的成员变量iy设为cp与二维字符数组strmaze第0行第0列的地址之间的元素个数模上32的结果 执行printnear函数,参数有字符指针cp,字符ca和结构体near变量n的地址 把ch设为你输入的字符 清空缓冲区 把解引用的cp设为空格 'w' == ch? 1 != n.ix && '*' != *(cp - 32)? 把cp向左移动32位 把结构体near变量n的成员变量iwalk自增1 把解引用的cp设为字符“P” 把背景色设为黑色,前景色设为淡绿色 前面输出“恭喜你,走了\033[3”,如果字符“0”为ca,那么中间就输出“2m”,否则就输出“3;1m”,后面则输出结构体near变量n的成员变量iwalk和“\033[0;32;1m步就赢了\n” 结束 'a' == ch? 1 != n.iy && '*' != *(cp - 1)? 把cp向左移动一位 把结构体near变量n的成员变量iwalk自增1 's' == ch? 30 != n.ix && '*' != *(cp + 32)? 把cp向右移动32位 把结构体near变量n的成员变量iwalk自增1 'd' == ch? 30 != n.iy && '*' != *(cp + 1)? 把cp向右移动一位 把结构体near变量n的成员变量iwalk自增1 printnear函数 是 否 结束 开始 定义整型i为0 把有9个元素的整型数组arr里的元素分别初始化为-33,-32,-31,-1,0,1,31,32和33 i < 9? 前面输出“\033[”,如果字符“G”为解引用之后的cp向右移动arr的第i项的值位的结果,那么中间就输出“32;1m”,否则如果结构体near指针n指向的成员变量i等于结构体near指针n指向的成员变量ix,或者结构体near指针n指向的成员变量ia等于结构体near指针n指向的成员变量iy,并且4为i,字符“0”为ca,那么中间就输出“32m”,否则就输出“0m”,后面则输出解引用之后的cp向右移动arr的第i项的值位的结果和“\033[0m”,如果i模3减去2的结果不为0,那么最后就输出空字符串,否则最后就输出“#\n” i自增1 前面输出“####\n你走了\033[”,如果字符“0”为ca,那么中间就输出“32;1m”,否则中间就输出“31;1m”,后面则输出结构体near指针n指向的成员变量iwalk和“\033[0m步\n”