我用 JS 構(gòu)建了一個(gè)廣泛的掃雷游戲,我正在嘗試實(shí)現(xiàn)一種有效的方法來(lái)通過(guò)點(diǎn)擊重新啟動(dòng)游戲,但我做空了?,F(xiàn)在我只是讓整個(gè)頁(yè)面在點(diǎn)擊時(shí)重新加載,但這不是我想要發(fā)生的。我構(gòu)建游戲的方式,一切都被加載,所以我不確定如何在不重構(gòu)我的所有代碼的情況下處理這個(gè)問(wèn)題。我嘗試創(chuàng)建一個(gè)函數(shù)來(lái)重置所有全局變量,刪除我之前創(chuàng)建的所有 div,然后調(diào)用一個(gè)我創(chuàng)建的函數(shù)來(lái)包裝我的所有代碼并重新做一遍。這種方法刪除了 div,但沒(méi)有再次放置它們。這是我的主要功能function createBoard() { const bombsArray = Array(bombAmount).fill('bomb') const emptyArray = Array(width * height - bombAmount).fill('valid') const gameArray = emptyArray.concat(bombsArray) // --Fisher–Yates shuffle algorithm-- const getRandomValue = (i, N) => Math.floor(Math.random() * (N - i) + i) gameArray.forEach((elem, i, arr, j = getRandomValue(i, arr.length)) => [arr[i], arr[j]] = [arr[j], arr[i]]) // --- create squares --- for (let i = 0; i < width * height; i++) { const square = document.createElement('div') square.setAttribute('id', i) square.classList.add(gameArray[i]) grid.appendChild(square) squares.push(square) square.addEventListener('click', function () { click(square) }) square.oncontextmenu = function (e) { e.preventDefault() addFlag(square) } } //add numbers for (let i = 0; i < squares.length; i++) { let total = 0 const isLeftEdge = (i % width === 0) const isRightEdge = (i % width === width - 1) if (squares[i].classList.contains('valid')) { //left if (i > 0 && !isLeftEdge && squares[i - 1].classList.contains('bomb')) total++ //top right if (i > 9 && !isRightEdge && squares[i + 1 - width].classList.contains('bomb')) total++ //top if (i > 10 && squares[i - width].classList.contains('bomb')) total++ //top left if (i > 11 && !isLeftEdge && squares[i - 1 - width].classList.contains('bomb')) total++ //right if (i < 129 && !isRightEdge && squares[i + 1].classList.contains('bomb')) total++ //bottom left if (i < 120 && !isLeftEdge && squares[i - 1 + width].classList.contains('bomb')) total++ 這有效地刪除了加載時(shí)創(chuàng)建的網(wǎng)格方塊,但不會(huì)再次創(chuàng)建它們。我希望能夠再次運(yùn)行該初始函數(shù)。我怎樣才能做到這一點(diǎn)?這是一個(gè)代碼筆
如何重置我的 javascript 游戲中的所有內(nèi)容
阿波羅的戰(zhàn)車
2022-12-09 16:30:00