【发布时间】:2016-06-30 10:21:10
【问题描述】:
我正在寻找解决方案,但我无法使用任何解决方案而不会出现错误。 我试图在控制台中绘制地图,使用多维数组。我想要更多的地图,但如果不发送无用的代码,我就无法做到。这是地图:
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。我设法使指针“指针”在类 Maps 中显示 void get_in_area(),但是当我想在第二个代码示例中使用 somemap 指针绘制地图时,控制台崩溃了。它可以工作,而不是 somemap[i] 我放了 map2[i]。如果我错过了什么,我很抱歉,我是初学者,英语不是我的第一语言。 我用这个教程制作了这个脚本:https://www.youtube.com/watch?v=7gpH7bOS350
【问题讨论】:
-
因为您假设数组边界 == 81?一旦未定义的行为认为它应该崩溃,它就会崩溃
-
在 c++ 中也尽量避免使用原始数组并将它们包装在一个类中,或者使用现有的类之一以更好的方式让它失败并产生一个干净的异常
-
我到处尝试编辑 81,但没有帮助。地图的大小会有所不同,最大尺寸是 81x81,所以我到处都写了 81。感谢您的建议,但代码示例在课堂上,我只是没有粘贴整个代码
-
将地图包装在一个定义地图边界的类中?
标签: c++ pointers multidimensional-array