質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

1回答

1093閲覧

エラーの改善策について

vamos

総合スコア2

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/05/11 01:52

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);
このようなエラーが出ます。解決策教えて欲しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K_3578

2021/05/11 01:53

ソースコード、エラーメッセージはMarkDown方式でコードブロック化してご提示ください。 書き方が分からない場合は下記質問を参考にしてください。 https://teratail.com/questions/238564
y_waiwai

2021/05/11 01:58

このままではコードが見づらいので、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください また、エラーメッセージは、いらぬ翻訳省略しないで、出たそのママをコピペで提示してください
guest

回答1

0

C

1void random_map(int map[HEIGHT][WIDTH]) { ... }

関数として宣言して定義しているのに、main() で

C

1random_map = (map)

何を代入しようとしてるんです?

おそらく

C

1random_map(map);

としたいのでは?

投稿2021/05/11 01:59

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問