目录
- 注意事项
- 开头
- 程序
- 程序的流程图
- 程序输入与输出的效果
- 结尾
注意事项
- 程序里有关字符’\033’的输出都关于Sunshine-Linux的其中一篇博客——《printf函数高级用法设置打印字体颜色和背景色等》
开头
大家好,我叫这是我58。今天,我们来看一下我用C语言编译的边界互通传送迷宫和与之相关的一些东西。
程序
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <Windows.h>
void printmaze(const char strmaze[9][9]) {int ia = 0;int ib = 0;for (ia = 0; ia < 9; ia++) {for (ib = 0; ib < 9; ib++) {printf("\033[%sm%c", 'G' == strmaze[ia][ib] ? "32" : '^' == strmaze[ia][ib] ? "33" : "0", strmaze[ia][ib]);}printf("\033[0m|\n");}printf("---------@\n");
}
int main() {int i = 0;char ch = 0;char strmaze[9][9] = {" * ^^ ^ ","*P*^ ^ ^","^*^ ^ "," ^ ^^^ ^ "," ^ "," ^ ^^ ^","^^ ^ ^"," ^ G "," ^ ^ * "};char* cp = &strmaze[1][1];char* const carrp[32] = { &strmaze[0][4],&strmaze[0][5],&strmaze[0][7],&strmaze[1][3],&strmaze[1][5],&strmaze[1][8],&strmaze[2][0],&strmaze[2][7],&strmaze[3][3],&strmaze[3][4],&strmaze[3][7], &strmaze[4][6],&strmaze[6][0],&strmaze[3][1],&strmaze[5][6],&strmaze[6][3],&strmaze[7][4],&strmaze[2][2],&strmaze[3][5],&strmaze[6][1],&strmaze[6][8],&strmaze[5][8],&strmaze[5][5],&strmaze[5][3],&strmaze[8][4],&strmaze[8][1],&strmaze[0][1],&strmaze[1][0],&strmaze[1][2],&strmaze[2][1],&strmaze[8][7],&strmaze[1][1] };printf("欢迎你来玩这个迷宫游戏,在这个迷宫中,“P”是你,“G”是终点,而“*”是你可以走的地方,空格是虚空,你不能走,“w”往上,“a”往左,“s”往下,“d”往右,并且,这个迷宫边界互通,而且只要在传送点“^”上输入“z”,就可以传送到这个传送点的另一端,而你只要走到终点就可以了,这就是这个迷宫游戏的规则");Sleep(8800);system("cls");while ('G' == strmaze[7][7]) {printmaze(strmaze);scanf("%c", &ch);while ('\n' != getchar()) {;}*cp = ' ';for (i = 0; i < 26; i++) {' ' == *carrp[i] && (*carrp[i] = '^');}for (; i < 32; i++) {' ' == *carrp[i] && (*carrp[i] = '*');}switch (ch) {case 'w':for (i = 0; i < 9; i++) {if (cp == &strmaze[0][i]) {break;}}(9 == i && ' ' != *(cp - 9)) && (cp -= 9);(9 != i && ' ' != *(cp + 72)) && (cp += 72);break;case 'a':for (i = 0; i < 9; i++) {if (cp == &strmaze[i][0]) {break;}}(9 == i && ' ' != *(cp - 1)) && cp--;(9 != i && ' ' != *(cp + 8)) && (cp += 8);break;case 's':for (i = 0; i < 9; i++) {if (cp == &strmaze[8][i]) {break;}}(9 == i && ' ' != *(cp + 9)) && (cp += 9);(9 != i && ' ' != *(cp - 72)) && (cp -= 72);break;case 'd':for (i = 0; i < 9; i++) {if (cp == &strmaze[i][8]) {break;}}(9 == i && ' ' != *(cp + 1)) && (cp++);(9 != i && ' ' != *(cp - 8)) && (cp -= 8);break;case 'z':for (i = 0; i < 26; i++) {if (carrp[i] == cp) {i < 13 && (cp = carrp[i + 13]), i < 13 || (cp = carrp[i - 13]);break;}}break;default:break;}*cp = 'P';system("cls");}system("color 0A");printf("恭喜你,你赢了\n");return 0;
}
程序的流程图
程序输入与输出的效果
边界互通传送迷宫
结尾
在你看到这里后,可以评论来互动一下我哦。