c语言迷宫游10*10,起点终点,地图随机生成代码
时间: 2023-08-12 07:14:50 浏览: 166
以下是一个简单的C语言迷宫游戏的代码,实现了10*10的迷宫地图的随机生成、起点和终点的随机放置以及简单的搜索功能:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 10
#define COL 10
int maze[ROW][COL];
void initMaze()
{
int i, j;
srand(time(NULL));
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
{
if (rand() % 5 == 0) // 随机生成障碍物
{
maze[i][j] = 1;
}
else
{
maze[i][j] = 0;
}
}
}
// 随机生成起点和终点
maze[rand() % ROW][rand() % COL] = 2;
maze[rand() % ROW][rand() % COL] = 3;
}
void printMaze()
{
int i, j;
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
{
switch (maze[i][j])
{
case 0:
printf(" "); // 空格表示通路
break;
case 1:
printf("■"); // 障碍物
break;
case 2:
printf("S"); // 起点
break;
case 3:
printf("E"); // 终点
break;
case 4:
printf("x"); // 已经走过的路
break;
default:
break;
}
}
printf("\n");
}
}
int findPath(int row, int col)
{
if (row < 0 || row >= ROW || col < 0 || col >= COL) // 判断是否越界
{
return 0;
}
if (maze[row][col] == 1 || maze[row][col] == 4) // 判断是否为障碍物或已经走过的路
{
return 0;
}
if (maze[row][col] == 3) // 到达终点,返回成功
{
return 1;
}
maze[row][col] = 4; // 标记已经走过的路
if (findPath(row - 1, col) || findPath(row, col + 1) || findPath(row + 1, col) || findPath(row, col - 1))
{
return 1;
}
else
{
maze[row][col] = 0; // 没有找到通路,取消标记
return 0;
}
}
int main()
{
initMaze();
printf("Maze:\n");
printMaze();
printf("\n");
if (findPath(0, 0)) // 从起点开始搜索
{
printf("Found the path:\n");
printMaze();
}
else
{
printf("Cannot find the path.\n");
}
return 0;
}
```
这个代码生成的迷宫地图会随机生成障碍物、起点和终点,并使用递归算法来搜索通路。您可以运行代码来查看效果。
阅读全文