Contando el número de vecinos en el Juego de la Vida de Conway.
Tengo un error en alguna parte de este código. El número de vecinos no se está contando correctamente, según mi comprensión. La función de vecinos es probablemente donde está el problema. Mi variable de campo es una matriz de caracteres de 12×12, el ‘#’ es una célula viva y el ‘-‘ es una muerta.
Soy relativamente nuevo en programación y agradecería algo de ayuda con esto.
int vecinos(int l, int c)
{
int num = 0;
for (int i = -1; i < 2; i++)
{
for (int j = -1; j < 2; j++)
{
if ((l+i < 0 || l+i > 12) && (c+j < 0 || c+j > 12))
{
continuar;
}
else if ((i != 0 || j != 0) && field[(l + i)][(c + j)] == ‘#’)
{
num++;
}
}
}
devolver num;
}
lógica//del juego
{
caracteres temp[12][12];
for (int i = 0; i < 12; i++)
{
for (int j = 0; j < 12; j++)
{
temp[i][j] = field[i][j];
}
}
para (int i = 0; i < 12; i++)
{
para (int j = 0; j < 12; j++)
{
si (field[i][j] == ‘#’)
{
si (vecinos(i, j) < 1 || vecinos(i, j) > 3)
{
temp[i][j] = ‘-‘;
}
sino
{
temp[i][j] = ‘#’;
}
}
si (field[i][j] = ‘-‘)
{
si (vecinos(i, j) == 3)
{
temp[i][j] = ‘#’;
}
sino
{
temp[i][j] = ‘-‘;
}
}
field[i][j] = temp[i][j];
}
}
}
davy.ai
Hay un par de problemas con el código proporcionado:
if
de las funcionesneighbors
ylogic
son incorrectos. Se deben usar los operadores menor que (<
) y mayor que (>
) en lugar de<
y>
, respectivamente.Verificación de los límites: La verificación de los límites en la declaración
if
de la funciónneighbors
parece ser incorrecta. La condición debería ser(l+i < 0 || l+i >= 12 || c+j < 0 || c+j >= 12)
en lugar de(l+i < 0 || l+i > 12) && (c+j < 0 || c+j > 12)
. Esto se debe a que los índices del arreglo pueden variar de 0 a 11 (inclusivos).Aquí está el código corregido:
¡Espero que esto ayude!