我正在努力想出一个干净的功能,它会对2D阵列进行检查,以验证ConnectFour游戏中是否有胜利。我正试图通过逻辑,但我的大脑现在是瑞士奶酪。这是我检查水平获胜的原因。在我看来,应该有一种方法来简化这个块,以便在所有可能的方向上工作。
private function checkForHorizontalWin(column:uint, row:uint, grid:Array):Boolean
{
var player:uint = grid[column][row];
var counter:uint = 1;
for(var i:uint = Math.min(0, uint(column-1)); i>=0; i--)
{
if(!grid[i][row] || grid[i][row] != player)
{
break;
}
counter++;
}
for(var j:uint = column+1; j<_columns; j++)
{
if(!grid[j][row] || grid[j][row] != player)
{
break;
}
counter++;
}
if(counter >=4)
{
return true;
}
else
{
return false;
}
}
答案 0 :(得分:0)
我实际上最终做了一些非常简单的事情......将网格数组转换为字符串然后连续查找4个...只有棘手的部分才能获得正确的数组用于对角线的可能性但我得到的结果也是如此。