我有MATLAB的问题 - 或者至少我现在无法解决它,如果我照看那个特定的错误信息比我得到非常复杂的例子。带到它的总基数,我的问题看起来如下:
我必须编写一个Connect-Four游戏。游戏领域以零的形式初始化:
Field = zeros([6 7]);
稍后,我必须检查胜利条件。但是,如果我做了类似
的事情 if GameField(7, 7) == xxx
然后它显然失败了,因为游戏领域只有六列。准确的错误消息是'索引超出矩阵维度' - 我完全可以理解为什么会这样。
是否有任何函数可以帮助我避免该错误(以编程语言中的try-catch方式)。我知道例如有一个名为exists
的函数,但这只适用于变量等 - 但不适用于矩阵维度。在处理对角线值时,使用length()
- 函数会非常棘手。我实际上正在寻找能够实现以下功能的功能(我不知道名字)
if valueExists(GameField(7, 7))
%do something
else
%do something other
end
答案 0 :(得分:0)
您知道字段的大小,将其存储在名为fieldSize
的变量中。
fieldSize = [6 7];
因此,您可以方便地将字段初始化为
Field = zeros(fieldSize);
接下来,当您要执行检查时,例如当前位置右下角的值是否为1,您可以始终先检查fieldSize
currentPosition = [1 7];
bottomRight = currentPosition - [1 1];
if any(bottomRight < 1 | bottomRight > fieldSize)
% do not check b/c out of field
else
% perform check
end
或者,您可以优化搜索策略,这样您就不会首先看到该字段。例如,从左下到右上角的四个对角线永远不会在第5:7列中开始。