Ich versuche, eine Breitensuche Algorithmus für mein Bomberman-Spiel zu implementieren, ist es Wand 1 und Boden durch 0, dargestellt ich die Funktion FindDepth wollte, dass mir die kürzeste Entfernung von der Position A geben, zu Position B in Anbetracht der Tatsache, dass wir die Wände nicht überlappen können. Das Problem ist, dass ich im folgenden Programm einen Segmentierungsfehler erhalte.Segmentierungsfehler im Programm
int FindDepth(int grid[5][5], Position A, Position B)
{
if ((A.x == B.x) && (A.y == B.y)) return 0;
int dist[] = {0,0,0,0};
if(A.x - 1 > -1)
if(grid[A.y][A.x - 1] == FLOOR) {
dist[0] = FindDepth(grid, {A.x-1,A.y}, B);
}
if(A.x + 1 < 6)
if(grid[A.y][A.x + 1] == FLOOR) {
dist[1] = FindDepth(grid, {A.x+1,A.y}, B);
}
if(A.y - 1 > -1)
if(grid[A.y - 1][A.x] == FLOOR) {
dist[2] = FindDepth(grid, {A.x,A.y - 1}, B);
}
if(A.y + 1 < 6)
if(grid[A.y + 1][A.x] == FLOOR) {
dist[3] = FindDepth(grid, {A.x,A.y + 1}, B);
}
int largest = -1;
for(int i = 0; i < 4; i++) {
if(dist[i] > largest) {
largest = dist[i];
}
}
return largest;
}
Dies war der vollständige Code.
'if (...), wenn (...)' kann geändert werden 'if (... && ...)' –
Das ist nicht der vollständige Code des Programms ist. Das ist eine Funktion. –