【发布时间】:2018-01-31 16:24:05
【问题描述】:
int Square::countmines(){
int numofmines = 0;
for (int valuey = y_ - 1; valuey < valuey + 2; valuey ++){
for (int valuex = x_ -1; valuex < valuex + 2; valuex ++){
if(lauta_-> at(valuex).at(valuey).returnmine() == true){
numofmines ++;
}
}
我正在尝试用 C++ 为学校项目编写一个扫雷游戏。 Square 是一个具有 x 和 y 坐标的对象,如果有地雷,则为布尔值。 Count mines 通过遍历周围的每个方格来计算该方格附近有多少地雷,如果有地雷,则 numofmines 值加 +1。
问题是当计算棋盘边缘的一个正方形的一个正方形的附近的地雷时,程序会抛出一个索引错误。在 python 中,我可以像这样修复它:
try:
<MY CODE>
except IndexError:
pass
在c++中有类似的方法吗?
【问题讨论】:
-
您不会忽略错误。你修复它们。不要越界。只需添加检查。
-
然后检测边缘条件并根据需要进行调整。
-
如果有的话就叫Javascript...
-
这种特殊情况必须由代码明确处理。
-
或在雷区周围添加额外的单元格并在该边界内迭代。因此,不是从 0 到 9 循环 10 个单元格,而是有 14 个单元格并从 2 到 11 循环
标签: c++