因此,我正在编写一个程序,其中将9种不同的迷宫存储在2d数组中,并全部填充了硬编码值。当玩家选择迷宫时,我想将所选迷宫中的硬编码值复制到活动迷宫的2d数组中。当我写出它时,我以最直接的方式做到了,如下所示。然后我想让它看起来更好,使它迷宫……...肿。开关盒不会减少行数,因此我想采取某种方法将int mazeSelection
变量立即放入所选迷宫的变量名中。但是似乎您不能在运行时更改变量名,也不能使用字符串变量来表示另一个变量的名称。例如,string mazenumber = "maze" + tostring(mazeSelection);
那么做mazenumber[11][11]
不起作用,但这就是我想要做的基本想法。
因此,结果是,有没有办法使此代码更有效?
if(mazeSelection == 1)
maze[11][11] = maze1[11][11];
if(mazeSelection == 2)
maze[11][11] = maze2[11][11];
if(mazeSelection == 3)
maze[11][11] = maze3[11][11];
if(mazeSelection == 4)
maze[11][11] = maze4[11][11];
if(mazeSelection == 5)
maze[11][11] = maze5[11][11];
if(mazeSelection == 6)
maze[11][11] = maze6[11][11];
if(mazeSelection == 7)
maze[11][11] = maze7[11][11];
if(mazeSelection == 8)
maze[11][11] = maze8[11][11];
if(mazeSelection == 9)
maze[11][11] = maze9[11][11];
所以您的问题缺少详细信息,但是假设您有这个问题
int maze[11][11], maze1[11][11]; // etc
那么首先要说的是
maze[11][11] = maze1[11][11];
不会复制您的迷宫。这是一个非常常见的初学者误解,您可以通过这种方式引用整个数组,但maze1[11][11]
仅引用坐标(11,11)处的一个迷宫元素而不是整个迷宫。更糟糕的是,由于数组的大小是11 x 11,因此该元素实际上并不存在,因此代码只是一个错误。没有(令人惊讶的)没有简单的方法可以在C ++中复制数组。
最简单的建议(由于@molbdnilo)是将迷宫放入结构中。
struct Maze
{
int tiles[11][11];
};
Maze maze, maze1; // etc
现在可以以通常的方式复制结构,因此
maze = maze1;
是合法代码,并且确实复制了迷宫。
然后,您可以继续做一些迷宫,并编写以下简单代码
Maze selected_maze, all_mazes[10];
selected_maze = all_mazes[mazeSelection];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句