Я искал решение, но не смог использовать без ошибок. Im пытается нарисовать карту в консоли, используя мультидисциплинарный массив. Я хочу иметь больше карт, но я не могу это сделать без спама бесполезного кода. Это карта:Пытаясь использовать многомерные указатели массивов
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() в классах Maps, но Console падает, когда я хочу нарисовать карту с указателем somemap во втором примере кода. Он работает, когда вместо somemap [i] я помещаю map2 [i]. Мне очень жаль, что я что-то пропустил, я начинаю, а английский не является моим первым языком. Я сделал этот сценарий с этим уроком: https://www.youtube.com/watch?v=7gpH7bOS350
Beacause вы принимаете границы массива == 81? он сработает, как только неопределенное поведение пойдет, оно должно потерпеть крах – Neijwiert
также в C++ попытаться избежать как можно большего количества необработанных массивов и обернуть их внутри класса или использовать один из существующих классов, чтобы это не сработало с чистым исключением – Neijwiert
I пытался повсюду редактировать 81, но это никогда не помогало. карты будут отличаться по размеру, а максимальный размер - 81x81, поэтому я просто написал 81 везде. спасибо за совет, но образец кода находится в классе, я просто не вставлял весь код – Pinet