void random_map(int map[HEIGHT][WIDTH]){ //ランダムに多次元配列のmapを作成
srand((unsigned) time(NULL));
int i, j, copy; for(j = 1; j < HEIGHT - 1 ; j++){ for(i = 1; i < WIDTH - 1; i++){ int rand_i = rand() % (WIDTH - 2) + 1; //ランダムに縦と横の列の行番号を作成 int rand_j = rand() % (HEIGHT - 2) + 1; switch (map[j][i]) { case COIN: case WALL: case BOMB: case WARP: case QUESTION: { switch (map[j][i]){ case COIN: case WALL: case BOMB: case WARP: case QUESTION:{ copy = map[j][i]; //ランダムな値を入れ替える map[j][i] = map[rand_j][rand_i]; map[rand_j][rand_i] = copy; } break; default : break; } break; default: break; } } } }
}
// メイン関数
int main(void)
{
display_map();
// コマンドラインからの入力を受け取り, // ロボット"@"を動作させる int c; // 初期ステータスの設定 robo.x = 1; robo.y = 18; robo.coin = 0; robo.life = 10; robo.state = 0; // マップの初期状態をtmpに格納 int i,j; for(j = 0; j < HEIGHT; j++){ for(i = 0; i < WIDTH; i++){ tmp[j][i] = map[j][i]; } } map[robo.y][robo.x] = 6; random_map = (map); display_map(); // 終了するときはqを入力 int counter = 0; double startTime = clock(); double endTime; double totalTime = 0.0; double limitTime = 0.1; // ロボットの入力を受け付けて,移動させる // GOALにたどり着くとゲームクリアとなる. // lifeが0になるとゲームオーバー, // 制限時間を過ぎるとタイムオーバー // 途中で終了するときは'q'を入力する. while(robo.state == 0) { if ( totalTime > limitTime ){ robo.state = 10; break; } int c = getchar(); if (c == 'q'){ break; } if (move(c) == -1){ counter++; continue; } display_map(); endTime = clock(); totalTime = (double)(endTime - startTime) / CLOCKS_PER_SEC; fprintf(stderr, "%f\n", totalTime); counter++; } totalTime = (double)(endTime - startTime) / CLOCKS_PER_SEC; if (robo.state == 1){ fprintf(stderr, "GOAL!\n"); fprintf(stderr, "Counter: %d\n", counter); fprintf(stderr, "Time: %f\n", totalTime); }else{ if ( robo.state == 10 ){ // 時間制限オーバー fprintf(stderr, "Time Over\n"); } else{ // lifeが0になりゲームオーバー fprintf(stderr, "Game Over! Life is 0.\n"); } } // 終了後のロボットの状態(life)とコインの数(coin)を表示 display_status(); return 0;
}
error: non-object type 'void (int (*)[20])' is not assignable
random_map=(map);
このようなエラーが出ます。解決策教えて欲しいです。