私はボンバーマンタイプのゲームのために幅優先探索アルゴリズムを実装しようとしています。壁は1で表され、床は0で表されます。私はFindDepth関数を使って、位置Aから最短距離私たちが壁を重ね合わせることができないことを考慮して、位置Bに移動します。問題は、以下のプログラムでセグメント違反が発生していることです。プログラム内のセグメンテーションフォルト
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;
}
これは完全なコードです。
if(...)if(...) 'if(... && ...) 'に変更可能 –
これはプログラムの完全なコードではありません。それは一つの関数です。 –