首页 > 解决方案 > 检查板中的项目旁边是否有任何东西(二维数组)

问题描述

嘿,我正在用 C++ 制作简单的控制台游戏。我们有棋子(我使用二维动态数组制作)。我想检查是否有空间移动我们的棋子。我最简单也是最好的想法是,如果我可以检查棋子旁边的每个方格。然而,当棋子在棋盘的角落时,问题就出现了。(x-1,y), (x, y+1) , (x+1, y) , (x, y-1) [这意味着我们棋子周围的每个领域]。我的板子是二维动态数组。因此,如果我检查字段,例如 array[-1][0](这意味着字段 x:-1,y:0),它当然会超出内存范围。我的问题是,如果我超出这个范围是否很好,但我会在出现这个错误的情况下做出条件?

标签: c++arrays

解决方案


您可以检查索引是否在界限内:

if (x >= 0 && x < SIZE_X && y >= 0 && y < SIZE_Y)
    return array[x][y];
else
    return nullptr;

或者使用 try/catch:

try
{
    return array[x][y];
}
catch (out_of_range e)
{
    return nullptr;
}

推荐阅读