【发布时间】:2016-07-22 09:48:26
【问题描述】:
我正在制作一个黑白棋/黑白棋游戏,我使用二维数组来保存棋盘上每个空间的内存。
为了检查有效的移动,我使用了一个 if 语句,我使用 r+1 来检查同一行上的下一个空格。然而,由于数组只有 [8, 8] 大,当我遇到 r 为 8 的情况时,我会收到错误,因为它正在尝试检查数组中的第 9 个元素。这给了我一个索引越界错误。
想知道解决此问题的最佳方法是什么?我想也许可以交换到一个列表,但我不确定这是否适用于二维数组?
public box[,] grid = new box[8, 8];
if ((grid[r + 1, c].value == currentPlayer)
{
return true;
}
【问题讨论】:
-
如何避免?检查索引是否不在边界之外。 :-)
-
考虑使用
Length属性或Length()方法 -
使用 const 作为 Array 的大小,以便验证大小。常量 int SIZE = 8;
-
您可以为游戏领域创建一个单独的类。该字段只能通过为您进行边界检查的特定方法访问。这样你只需要实现一次检查逻辑。