gpt4 book ai didi

c - 用c生成奇怪字符的迷宫生成代码

转载 作者:行者123 更新时间:2023-11-30 19:28:32 25 4
gpt4 key购买 nike

所以我正在用C做uni的项目,它正在生成一个迷宫,但是中间字符很奇怪,我不知道它们来自哪里。另外,我如何确保迷宫有入口和出口?

enter image description here

这是代码:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define N 20

void gerador_labirinto(char a[N][N]);

int main(void)
{
char maze[N][N];
srand((unsigned int)time(NULL));
gerador_labirinto(maze);
return 0;
}

void gerador_labirinto(char a[N][N])
{
size_t linha,coluna = 0, r, k=(char)254;

for ( linha = 0; linha < N; ++linha )
{
a[linha][coluna] = k;
}

for ( linha = 0; linha < N; ++linha )
{
a[linha][N - 1] = k;
}

linha = rand() % 20 + 1;
a[linha][0] = k;

linha = rand() % 20 + 1;
a[linha][N - 1] = k;

for (coluna = 1; coluna < N - 1; ++coluna)
{
a[0][coluna] = k;
}

for (coluna = 1; coluna < N - 1; ++coluna)
{
a[N - 1][coluna] = k;
}

puts("");
for (linha = 0; linha < N; ++linha)
{
for (coluna = 0; coluna < N; ++coluna)
{
printf_s("%2c",a[linha][coluna]);
}
puts("");
}
puts("");
}

最佳答案

您需要完全填充迷宫,例如:

for ( linha = 0; linha < N; ++linha )
for ( coluna = 0; coluna < N; ++coluna )
a[linha][coluna] = ' '; // <--- a space, or whatever else you want


将这些行放在任何其他迷宫(a)操作之前:这些单元格包含垃圾,直到将它们设置为某个值为止。为此,您需要两个嵌套循环-您必须在每一行中写入每一列。相反,您发布的代码仅写入外部(外部)单元,因此内部单元包含垃圾。

在两次循环之后,您可以“调整”单个单元格。我的答案有点缺乏优化,因为我建议先填充整个迷宫,然后重写一些单个单元格。但这是最简单的方法。

希望能帮助到你。

关于c - 用c生成奇怪字符的迷宫生成代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53818199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com