注意事项
- 程序里有关字符’\033’的输出都关于Sunshine-Linux的其中一篇博客——《printf函数高级用法设置打印字体颜色和背景色等》
开头
大家好,我叫这是我58。今天,我用C语言编译了一个非常能折磨人的迷宫。当然,也有与这个迷宫相关的东西。
程序
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.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" : "0", strmaze[ia][ib]);
}
printf("\033[0m|\n");
}
printf("---------@\n");
}
int main() {
srand((unsigned int)time(NULL));
int i = 0;
int ia = 0;
char ch = 0;
char strmaze[9][9] = {
"P* * ",
" * * * * ",
" * * ",
"******** ",
" * * ",
" * * ",
" ********",
" * * ",
" * *G"
};
char* cp = &strmaze[0][0];
printf("欢迎你来玩这个「折磨人の迷宫」,在这个迷宫中,“P”是你,“G”是终点,而“*”是墙,空格是你可以走的地方,“w”往上,“a”往左,“s”往下,“d”往右,而你只要走到终点就可以了,这就是这个「折磨人の迷宫」的规则");
Sleep(6300);
system("cls");
while (20 == ia ? 'G' == strmaze[8][8] : 1) {
printmaze(strmaze);
scanf("%c", &ch);
while ('\n' != getchar()) {
;
}
*cp = ' ';
if (!(ia % 2) && &strmaze[7][8] == cp && 20 != ia) {
ia++;
strmaze[8][8] = ' ';
strmaze[0][0] = 'G';
}
if ((ia % 2) && &strmaze[1][0] == cp) {
ia++;
strmaze[8][8] = 'G';
strmaze[0][0] = ' ';
}
switch (ch) {
case 'w':
for (i = 0; i < 9; i++) {
if (cp == &strmaze[0][i]) {
break;
}
}
(9 == i && '*' != *(cp - 9)) && (cp -= 9);
break;
case 'a':
for (i = 0; i < 9; i++) {
if (cp == &strmaze[i][0]) {
break;
}
}
(9 == i && '*' != *(cp - 1)) && cp--;
break;
case 's':
for (i = 0; i < 9; i++) {
if (cp == &strmaze[8][i]) {
break;
}
}
(9 == i && '*' != *(cp + 9)) && (cp += 9);
break;
case 'd':
for (i = 0; i < 9; i++) {
if (cp == &strmaze[i][8]) {
break;
}
}
(9 == i && '*' != *(cp + 1)) && cp++;
break;
default:
break;
}
if (rand() < (rand() % 1000)) {
ia % 2 || (cp = &strmaze[1][0]), ia % 2 && (cp = &strmaze[7][8]);
}
*cp = 'P';
system("cls");
}
system("color 0A");
printf("恭喜你,你赢了\n");
return 0;
}
程序的流程图
程序的效果
「折磨人の迷宫」
结尾
在你看到这之后,可以评论来互动一下我哦。