簡體   English   中英

在二維數組中搜索對角線

[英]Searching diagonal in a 2d array

我試圖在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),因為秒讀起來比較困難。

GRID_HEIGHT向下迭代到GRID_HEIGHT-3 ,而不是從0迭代到GRID_HEIGHT-3 3。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM