###前提・実現したいこと
先日、Yahoo知恵袋に「ゴールまでの軌跡を表示していくゲームを作りたい」
という質問を見つけて他の方の解答やネットで見つけたソースを参考に作ってみました。
自分にも動くモノが作れてかなり感動したのですが、肝心の足跡を残す機能を
どのように実装すればいいのかわかりません。
解答の一つに「2次元配列にマップを作って移動したら元の位置に+を入れるだけです。」
とあったのですがどうすればいいのでしょか?
教えてください。
###発生している問題・エラーメッセージ
エラーメッセージ
###該当のソースコード
#include <stdio.h>
#include <stdlib.h>
#define N 5
int main(void)
{
int key='0';
int i, j, y=0, x=1;
int map[N][N];
int check[N][N]; //足跡用の配列を作ったのですが、どう扱っていいのかわかりません。
//壁 for(i=0; i<N; i++){ for(j=0; j<N; j++){ map[i][j]=1; check[N][N]=0; //初期化 } } //通路 for(i=1; i<N-1; i++){ for(j=1; j<N-1; j++){ map[i][j]=0; } } map[0][1]=3; //入口 : スタート map[4][3]=4; //出口 : ゴール while(key!='q') //キー入力 'q'キーで終了 { key=getch(); switch((key == 0x00 || key == 0xe0) ? getch(): key) { case 0x48:if((y>0)&&(map[y-1][x]!=1)) y--;break;//上 case 0x50:if((y<N-1)&&(map[y+1][x]!=1)) y++;break;//下 case 0x4b:if((x>0)&&(map[y][x-1]!=1)) x--;break;//左 case 0x4d:if((x<N-1)&&(map[y][x+1]!=1)) x++;break;//右 default:break; } //描画 system("cls"); for(i=0; i<N; i++){ for(j=0; j<N; j++){ if(y==i && x==j) printf("@"); else if(map[i][j]==1) printf("■"); else if((map[i][j]==0) || (map[0][1]==3 && map[4][3]==4)) printf(" "); else printf("+"); //どれでもなければ、+が付くと思ったのですがつきませんでした。 } printf("\n"); } } return 0;
}
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
Notepad++で書いてVSのclコマンドでコンパイルしてます。
回答1件
あなたの回答
tips
プレビュー