在二维数组中搜索对角线

用户名

我试图在2D阵列中对角搜索四连体游戏。我以为我知道了,但是显然我错了。第一组for循环可以正常工作,对角地从右到左搜索。第二组for循环不起作用。我以为我要做的就是将一些积极的迹象转变为消极的事情,并且奏效。最终,通过更改GRID_HEIGHT-1 ... BUT,我得以使其部分工作,但我不断遇到错误。在这一点上的任何帮助将不胜感激。同样,二维数组的网格为5x4。所以它真的连接3。

    for (int y = 0; y <= GRID_HEIGHT-3; y++) {
        for (int x = 0; x <= GRID_WIDTH-3; x++) {
            if (    
                    state[y][x] != Player.NONE && 
                    state[y][x] == state[y+1][x+1] &&
                    state[y+1][x+1] == state[y+2][x+2]
                    ) return state[y][x];
        }
    }
    for (int y = 0; y <= GRID_HEIGHT-3; y++) {
        for (int x = 0; x <= GRID_WIDTH-3; x++) {
            if (    
                    state[y][x] != Player.NONE && 
                    state[y][x] == state[y-1][x-1] &&
                    state[y-1][x-1] == state[y-1][x-2]
                    ) return state[y][x];
        }
    }


    return Player.NONE;

}
凯文

对于第二组循环,您将从索引中减去,这意味着索引可以低于零。您需要循环才能从零开始。

for (int y = 2; y < GRID_HEIGHT; y++) {
    for (int x = 2; x < GRID_WIDTH; x++) {
        if (    
                state[y][x] != Player.NONE && 
                state[y][x] == state[y-1][x-1] &&
                state[y-1][x-1] == state[y-2][x-2]
                ) return state[y][x];
    }
}

另外,通常在适用时应说(x <GRID_HEIGHT)而不是(x <= GRID_HEIGHT-1),因为秒读起来比较困难。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何遍历一个二维数组对角线从左上到右下

二维数组中每个对角线的最大值

在二维数组中查找邻居(不包括对角线)

numpy:计算二维数组每一行对角线的最快方法

如何在numpy中使用二维数组构造对角线数组?

二维布尔数组垂直,水平和对角线分配

检查二维数组对角线?

通过二维数组中对角线元素的总和验证八皇后解决方案

二维数组中沿对角线和反对角线的总和-NumPy / Python

从二维数组中检索对角线值

使用JavaScript计算二维矩阵中对角线总和的减法

添加功能以编辑二维数组中对角线上的数字

在二维数组中找到第一行和对角线的总和

查找二维数组中两个对象之间的距离,而不是对角线

如何从二维字符数组中将对角线提取为字符串?

Java:如何检查对角线连接二维阵列中的四连胜

如何检查二维数组中的对角线元素是否被占用?

在二维矩阵中查找回文(水平、垂直、对角线)

循环遍历二维数组(对角线)C++

如何从 C 的主对角线上的二维数组中删除负元素

用中线交换二维矩阵对角线

编写矩阵(二维列表)函数的对角线

在 C++ 中返回二维数组对角线元素总和的函数

如何获取二维 numpy 数组中所有行的对角线?

如何在二维数组中找到一个点的对角线

这种方法如何从二维数组中获取正确的对角线?

二维数组主对角线上的最小值

相对于主对角线对二维数组进行排序

如何计算二维数组中的次对角线平均值?