所以我正在编写一个程序,其中有 9 个不同的迷宫,存储在二维数组中,所有迷宫都填充了硬编码值。当玩家选择迷宫时,我想将所选迷宫中的硬编码值复制到事件迷宫的二维数组中。当我写出来时,我以最直接的方式完成了它,如下所示。然后我想更好地迷宫它,因为它看起来……臃肿。 switch case 不会减少行数,因此我想采取某种方法立即将 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];
关于c++ - 有没有一种方法可以更有效地选择特定变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64022609/