迷路のプログラムを作成しています
以下のエラーメッセージが出てきます.
Conflicting types for 'move'```
#include <stdlib.h> #include <time.h> #define XMAX 7 //マップのXのサイズ #define YMAX 5 //マップのYのサイズ int MAP[YMAX][XMAX] //マップ 0:未踏(□) 1:障害物(■) = { { 0, 0, 0, 1, 0, 0, 1}, { 0, 0, 0, 0, 0, 0, 1}, { 1, 0, 0, 0, 1, 0, 1}, { 0, 0, 1, 0, 0, 0, 0}, { 1, 0, 0, 0, 0, 0, 1}}; int X = 0, Y = 0; //キャラクターの位置(X,Y) int GX = 5, GY = 4; //ゴール位置 void prtMap(void); //マップ表示 int search(int[]); //移動可能方向の探索 int move(void); //移動 int endJudge(int,int); //終了判定:返り値が1なら終了,0なら続行 int main(void) { int n, nmove; /* 乱数初期化 */ srand(time(NULL)); /* ゲーム開始 */ printf("ゴール(G)まで移動します.\n"); printf("■は障害物です.\n"); printf("初期マップ\n"); prtMap(); for (n=1; ;n++) { printf("試行回数:%d\n", n); /* 移動 */ nmove = move(); /* マップ表示 */ prtMap(); /* 終了判定 */ if (endJudge(n, nmove) == 1) break; } } /* マップ表示 */ /* 引数:なし */ /* 返り値:なし */ void prtMap(void) { int i, j; for (i = 0; i < YMAX; i++) { for (j = 0; j < XMAX; j++) { if (j == X && i == Y) printf("★"); else if (j == GX && i == GY) printf("G"); else if (MAP[i][j] == 1 ) printf("■"); else printf("□"); } printf("\n"); } printf("\n"); } int search(int dir[]) {int i=0; int sum=0; if(MAP[Y+1][X]==0){ dir [i]=1; sum++; i++; } if(MAP[Y][X-1]==0){ dir [i]=2; sum++; i++; } if(MAP[Y-1][X]==0){ dir [i]=3; sum++; i++; } if(MAP[Y][X+1]==0){ dir [i]=4; sum++; } return sum; } /* キャラクターの移動 */ /* 引数:なし */ /* 返り値:移動可能な方向の数 */ int move(void) { int nmove, select; int dir[4]; //今いる場所を障害物に変更 MAP[Y][X] = 1; //移動可能な方向をsearchで調べ,移動可能な方向の合計数をnmoveへ代入 nmove = search(dir); if (nmove == 0) return 0; //移動可能な方向の中から移動する方向をランダムに決定 select = rand() % nmove; switch (dir[select]) { case 1: Y++; break; case 2: X--; break; case 3: X++; break; case 4: Y--; break; default: printf("move(): error !!\n"); } return nmove; } int endJudge(int x, int y){ int judgeflag; if(MAP[Y][X]==MAP[GX][GY]){ judgeflag=1; printf("ゴールしました!\n移動歩数は%d歩です.\n",x); } else if(x==0||y==0){ printf("これ以上移動できません.\n諦めます.\n"); } else judgeflag=0; return judgeflag; } コード
C言語
試したこと
関数プロトタイプ宣言ができていないのでしょうか