c++ - 检查板中的项目旁边是否有任何东西(二维数组)
问题描述
嘿,我正在用 C++ 制作简单的控制台游戏。我们有棋子(我使用二维动态数组制作)。我想检查是否有空间移动我们的棋子。我最简单也是最好的想法是,如果我可以检查棋子旁边的每个方格。然而,当棋子在棋盘的角落时,问题就出现了。(x-1,y), (x, y+1) , (x+1, y) , (x, y-1) [这意味着我们棋子周围的每个领域]。我的板子是二维动态数组。因此,如果我检查字段,例如 array[-1][0](这意味着字段 x:-1,y:0),它当然会超出内存范围。我的问题是,如果我超出这个范围是否很好,但我会在出现这个错误的情况下做出条件?
解决方案
您可以检查索引是否在界限内:
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;
}
推荐阅读
- python-3.x - skmultilearn MLARAM 引发 Keyerror:0
- node.js - 查询时node.js条带UnhandledPromiseRejectionWarning
- vue.js - VueJS 基于 Random Slug 的 URL 的最佳方法
- intellij-idea - 我班级上的数字图标是什么意思?
- kubernetes - 为 AKS 群集使用托管标识功能的最佳方法是什么?
- android - Android Studio Flutter - 虚拟设备正在加载或卡住
- docker - x509:由未知机构签署的证书(可能是因为“crypto/rsa:...authority certificate”osmacbook”)
- javascript - 如何实时查询firestore wrt?
- c++ - for 循环是否会在 C++ 中创建向量、数组或任何其他数据类型的副本?
- php - 结合这两个查询并返回最匹配的一个