簡體   English   中英

JavaScript If-Statement被證明為正確,但輸出為False

[英]JavaScript If-Statement Proved True But Outputs False

我正在通過編寫第一個游戲(一個簡單的激光鏡類型的游戲)來學習JavaScript。 游戲在網格中運行,我想確定一個單元是否有障礙物。 因此,我將此函數稱為:

function updateGrid () {
for (let i = 0; i < cols; i++) {
        for (let j = 0; j < rows; j++) {
            for (let o = 0; o < obstacles.length; o++) {
                if (grid[i][j].x === obstacles[o].x && grid[i][j].y === obstacles[o].y) {
                    grid[i][j].obstacle = true;
                } else if (grid[i][j].x != obstacles[o].x && grid[i][j].y != obstacles[o].y) {
                    //grid[i][j].obstacle = false;
                }
            }
            for (let m = mirrors.length - 1; m >= 0; m--) {
                if (grid[i][j].x + cellOffset.x== mirrors[m].x && grid[i][j].y + cellOffset.y == mirrors[m].y) {
                    grid[i][j].mirror = true;
                } else {
                    grid[i][j].mirror = false;
                }
            }
            if (grid[i][j].x + cellOffset.x == target.x && grid[i][j].y + cellOffset.y == target.y) {
                grid[i][j].target = true;
            } else {
                grid[i][j].target = false;
            }
            if (grid[i][j].x == laserPen.x && grid[i][j].y + (rowH / 2) - (cellOffset.y / 4) == laserPen.y) {
                grid[i][j].pen = true;
            } else {
                grid[i][j].pen = false;
            }
        }
    }
}

但是,確定單元格是否包含障礙物的if語句似乎不起作用。

這有效(將grid [i] [j] .obstacle設置true ):

for (let o = 0; o < obstacles.length; o++) {
    if (grid[i][j].x === obstacles[o].x && grid[i][j].y === obstacles[o].y) {
            grid[i][j].obstacle = true;
    } else if (grid[i][j].x != obstacles[o].x && grid[i][j].y != obstacles[o].y) {
        //grid[i][j].obstacle = false;
    }
}

這不是(將grid [i] [j] .obstacle設置false ):

for (let o = 0; o < obstacles.length; o++) {
    if (grid[i][j].x === obstacles[o].x && grid[i][j].y === obstacles[o].y) {
            grid[i][j].obstacle = true;
    } else if (grid[i][j].x != obstacles[o].x && grid[i][j].y != obstacles[o].y) {
        grid[i][j].obstacle = false;
    }
}

我實際上添加了else(如果只是為了安全起見),但是它也無法通過簡單的else語句來工作。

我正在使用p5.js庫,對這里發生的任何見解將不勝感激。 謝謝!

經過測試后發現該錯誤。 我正在遍歷同一網格單元上的所有障礙(即,對於grid [2] [2]來說是測試障礙[0],對於grid [2] [2]來說是測試障礙[1])。 這意味着,如果數組中的第一個障礙被證明是正確的,而其他障礙物被證明是錯誤的,則整個grid [2] [2] .obstacle將會變為錯誤。 或直觀地進行映射:

grid[2][1] ...
grid[2][2].obstacle = true!
grid[2][2].obstacle = false.
grid[2][2].obstacle = false.
grid[2][3] ...

輸出:

grid[2][2].obstacle is false :(

暫無
暫無

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

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