用C语言写一段在迷宫中生成怪物的代码
时间: 2024-02-27 14:54:39 浏览: 18
以下是用 C 语言实现在迷宫中生成怪物的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROWS 10
#define COLS 10
void generate_maze(int maze[ROWS][COLS]) {
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
if (i == 0 || j == 0 || i == ROWS-1 || j == COLS-1) {
maze[i][j] = 1; // 边界为墙壁
} else {
maze[i][j] = 0; // 其他位置为通道
}
}
}
for (i = 2; i < ROWS-2; i += 2) {
for (j = 2; j < COLS-2; j += 2) {
maze[i][j] = 1; // 生成墙壁
int directions[4][2] = {{0, 2}, {2, 0}, {0, -2}, {-2, 0}};
int k, dx, dy;
for (k = 0; k < 4; k++) {
int r = rand() % 4; // 随机打乱方向
dx = directions[r][0];
dy = directions[r][1];
if (maze[i+dx][j+dy] == 0) { // 如果该方向为通道
maze[i+dx/2][j+dy/2] = 1; // 打通当前元素和相邻元素之间的墙壁
break;
}
}
}
}
}
void generate_monster(int maze[ROWS][COLS]) {
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
if (maze[i][j] == 0 && rand() % 10 == 0) { // 如果当前位置为通道并且随机数小于 0.1
maze[i][j] = 2; // 生成怪物
}
}
}
}
void print_maze(int maze[ROWS][COLS]) {
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
printf("%d ", maze[i][j]);
}
printf("\n");
}
}
int main() {
int maze[ROWS][COLS];
srand((unsigned) time(NULL)); // 随机数种子
generate_maze(maze);
generate_monster(maze);
print_maze(maze);
return 0;
}
```
代码中的 `generate_maze` 函数与前面 Python 示例代码的实现相同,用于生成迷宫。
`generate_monster` 函数用于在迷宫中生成怪物。该函数遍历迷宫中的每一个位置,如果该位置为通道并且随机数小于 0.1,则在该位置生成怪物。
`print_maze` 函数用于打印迷宫。
在 `main` 函数中,先生成迷宫,然后生成怪物,最后打印迷宫。