解決策を探していましたが、エラーなしで使用することはできませんでした。 多次元配列を使用してコンソールにマップを描画しようとしています。私はもっと多くの地図を持っていたいが、役に立たないコードをスパムすることなくそれをすることはできない。これは、マップです:多次元配列ポインタを使用しようとしています
char map2[11][15] = {
"###^######^###",
"#L #",
"^S #",
"#S #",
"# K #",
"########### #",
"#G #",
"# #### #",
"# #M #",
"# @ # #",
"## ########^##"};
と、この動いているスクリプト:
void Game::showing_different_maps()
{
differentmap= true;
while (differentmap)
{
system("cls");
for(int i = 0; i < 81; i++) // i < map2[y][]
{
cout << somemap[i] << endl; // drawing a map !THIS CAUSES CRASH!
}
system("pause>nul"); // this line prevent lagging somehow
if(GetAsyncKeyState(VK_UP)) // arrows to move on axis (y, x)
{
mapka.move(-1, 0);
}
if(GetAsyncKeyState(VK_DOWN))
{
mapka.move(1, 0);
}
if(GetAsyncKeyState(VK_RIGHT))
{
mapka.move(0, 1);
}
if(GetAsyncKeyState(VK_LEFT))
{
mapka.move(0, -1);
}
}
}
と、ここで私がインターネットで見つけることができるものです。
Wut wut(3, 13);
Maps *wsk;
pointer = &wut;
char (*somemap)[81] = new char[81][81];
somemap= &map2[81];
pointer = &wut;
pointer -> get_in_area();
私がしたいことは、コードの一部では、ポインタをmap2にしたいということです。私はクラスマップでvoid get_in_area()を表示するためにポインタ "ポインタ"を作成することができましたが、2番目のコードサンプルにsomemapポインタを使ってマップを描画したいときにコンソールがクラッシュします。 somemap [i]の代わりにmap2 [i]を置くとうまくいきます。私が何かを見逃してしまったらすみません、私は初心者で、英語は母国語ではありません。 私はこのチュートリアルでこのスクリプトを作っ:https://www.youtube.com/watch?v=7gpH7bOS350
あなたは配列の境界== 81を仮定していますか?定義されていない振る舞いが起こると直ちにクラッシュします。 – Neijwiert
も可能です。生の配列をできるだけ避けて、クラス内でラップしたり、既存のクラスを使用してクリーンな例外でよりうまくできないようにしてください。 – Neijwiert
81を編集するためにどこでも試したが、決して助けなかった。マップはサイズが異なり、最大サイズは81x81なので、どこにでも81を書いただけです。コードサンプルがクラスにありますが、私はコード全体を貼り付けていませんでした – Pinet