作為練習,我正在構建經典 Nibbles/Snake 游戲的克隆。游戲區域由一個二維數組(行和列)組成,玩家蛇由另一個二維數組組成,其中包含蛇當前占據的游戲區域中每個單元格的坐標。然后我有一個函數來創建蛇應該吃的蘋果。此函數返回一個簡單的數組,其中包含一個 x 坐標和一個 y 坐標,用于指定放置蘋果的游戲區域單元格。這個單元格當然永遠不應該是玩家蛇在創建蘋果時占據的單元格之一。但是,我構建的函數有時會在玩家蛇當前占據的單元格中創建一個蘋果。任何人都可以發現錯誤嗎?這是相關代碼:const rows = 20;const cols = 26;const cells = createCells(rows, cols);let player = [[1,1], [1,2], [1,3], [1,4]];let apple = createApple(cells, player);function createCells(rows, cols) { let cells = new Array(rows); for (let r = 0; r < cells.length; r++) { cells[r] = new Array(cols); } return cells;}function createApple(cells, player) { let positions = new Array(); for (let r = 0; r < cells.length; r++) { for (let c = 0; c < cells[r].length; c++) { for (let p = 0; p < player.length; p++) { if (!(player[p][0] === r && player[p][1] === c)) { positions.push([r, c]); } } } } let random = Math.floor(Math.random() * positions.length - 1); let apple = positions[random]; return apple;}
為什么這個返回坐標的函數有時會返回超出其假定限制的坐標?
收到一只叮咚
2021-06-08 09:00:01