#include #include #define MAZE_WIDTH 5 #define MAZE_HEIGHT 5 // 迷宫结构 char maze[MAZE_WIDTH][MAZE_HEIGHT] = { {'#', '#', '#', '#', '#'}, {'#', ' ', ' ', ' ', '#'}, {'#', ' ', '#', ' ', '#'}, {'#', ' ', ' ', ' ', '#'}, {'#', '#', '#', '#', '#'} }; // 玩家位置 int playerX = 1; int playerY = 1; // 打印迷宫 void printMaze() { for (int i = 0; i < MAZE_WIDTH; ++i) { for (int j = 0; j < MAZE_HEIGHT; ++j) { if (i == playerX && j == playerY) { printf("P "); } else { printf("%c ", maze[i][j]); } } printf("\n"); } } // 检查玩家位置是否有效 int isValidMove(int newX, int newY) { return (newX >= 0 && newX < MAZE_WIDTH && newY >= 0 && newY < MAZE_HEIGHT && maze[newX][newY] != '#'); } int main() { char direction; do { printMaze(); // 打印迷宫 printf("输入方向 (W/A/S/D): "); scanf(" %c", &direction); // 读取玩家输入的方向 switch (direction) { case 'w': // 上 if (isValidMove(playerX - 1, playerY)) { playerX--; } break; case 'a': // 左 if (isValidMove(playerX, playerY - 1)) { playerY--; } break; case 's': // 下 if (isValidMove(playerX + 1, playerY)) { playerX++; } break; case 'd': // 右 if (isValidMove(playerX, playerY + 1)) { playerY++; } break; default: printf("无效的方向,请重新输入。\n"); break; } // 检查是否到达终点 if (maze[playerX][playerY] == 'E') { printf("恭喜你,找到了出口!\n"); } } while (maze[playerX][playerY] != 'E'); return 0; } 在这个示例中,迷宫被定义为一个二维字符数组,'#'表示墙壁,空格' '表示可以走的路,'E'表示出口,'P'表示玩家的位置。玩家可以通过输入W、A、S、D来分别向上、向左、向下、向右移动。程序会检查玩家的移动是否有效(即是否不会撞到墙壁),然后更新玩家的位置。如果玩家到达出口,游戏结束并显示祝贺信息。