JavaScript实现扫雷游戏:外层蓝色格子边界bug问题求助
扫雷蓝色格子边界错误修复方案
你的问题出在那四个斜向2格的判断条件缺少边界校验,导致格子处于左右边界时,会错误匹配到另一行的跨列位置。直接给这四个条件加上对应边界判断即可解决:
修改代码
把蓝色格子判断中那四行有问题的代码:
|| bombsArray.includes(cellNumb - (gridLength * 2) - 1) || bombsArray.includes(cellNumb - (gridLength * 2) + 1) || bombsArray.includes(cellNumb + (gridLength * 2) + 1) || bombsArray.includes(cellNumb + (gridLength * 2) - 1)
替换为:
|| !atLeftSide && bombsArray.includes(cellNumb - (gridLength * 2) - 1) || !atRightSide && bombsArray.includes(cellNumb - (gridLength * 2) + 1) || !atRightSide && bombsArray.includes(cellNumb + (gridLength * 2) + 1) || !atLeftSide && bombsArray.includes(cellNumb + (gridLength * 2) - 1)
原因说明
- 对于
cellNumb - (gridLength * 2) -1和cellNumb + (gridLength * 2) -1:需要确保当前格子不在最左列(!atLeftSide),否则减1会跳到上/下一行的最右列,和炸弹的实际距离不符合2格要求。 - 对于
cellNumb - (gridLength * 2) +1和cellNumb + (gridLength * 2) +1:需要确保当前格子不在最右列(!atRightSide),否则加1会跳到上/下一行的最左列,造成错误匹配。
这样修改后,边界位置的格子就不会再错误触发蓝色标记,同时也不会影响正常位置的格子判断。
内容的提问来源于stack exchange,提问作者Pietro_
相关产品推荐
相关产品推荐

