能否提供一份C语言实现的简单迷宫小游戏源代码示例?
时间: 2024-12-15 18:21:01 浏览: 10
当然可以,以下是一个简单的C语言控制台版的迷宫小游戏的示例,使用了二维数组来表示迷宫,并采用深度优先搜索算法来实现玩家的移动:
```c
#include <stdio.h>
#include <stdlib.h>
#define ROWS 5 // 迷宫大小,可以根据需求调整
#define COLS 8
typedef struct {
int maze[ROWS][COLS];
int player_x, player_y; // 玩家当前位置
} Maze;
// 检查玩家是否越界或到达终点
int is_valid(int x, int y, Maze *maze) {
if (x >= 0 && x < ROWS && y >= 0 && y < COLS && !maze->maze[x][y]) {
return 1;
} else {
return 0;
}
}
// 深度优先搜索
void dfs(Maze *maze, int x, int y, int visited[][COLS]) {
visited[x][y] = 1;
if (x + 1 < ROWS && is_valid(x + 1, y, maze)) {
dfs(maze, x + 1, y, visited);
}
if (y + 1 < COLS && is_valid(x, y + 1, maze)) {
dfs(maze, x, y + 1, visited);
}
// 添加其它方向的移动检查...
}
int main() {
Maze maze;
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
maze.maze[i][j] = rand() % 2; // 随机生成墙壁(1)或路径(0)
}
}
// 设置初始玩家位置
maze.player_x = ROWS / 2;
maze.player_y = COLS / 2;
int visited[ROWS][COLS] = {0}; // 记录已访问过的节点
dfs(&maze, maze.player_x, maze.player_y, visited);
// 打印迷宫
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", maze.maze[i][j]);
}
printf("\n");
}
return 0;
}
```
请注意,这只是一个非常基础的版本,没有考虑用户输入、结束条件或游戏循环。实际运行时,你需要通过键盘输入控制玩家移动,游戏循环则需要在主函数外添加。
阅读全文