Permainan penyapu ranjau dalam html css dan js tidak mengira unit bom bersebelahan dengan betul
P粉145543872
P粉145543872 2024-01-17 08:35:00
0
1
490

Saya cuba mencipta semula penyapu ranjau dengan html, css dan javascript, saya perlu menyemak sel bersebelahan untuk melihat sama ada ia adalah bom dan kiraan, tetapi ia nampaknya tidak menyemak bahagian sel yang betul. Saya menggunakan kelas sel dengan x, y, isBomb, isChecked dan nombor yang mewakili bilangan jirannya adalah bom, saya juga menggunakan tatasusunan 1D untuk menyimpan grid sel Jadi soalan saya ialah jika terdapat sesuatu yang salah dengan fungsi ini atau patutkah saya menulis semula kod menggunakan tatasusunan 2D yang dimasukkan

function checkN(x, y){
    let count = 0

    if(cells[x+y*coll].isBomb == true){
        return
    }

    cells[x+y*coll].isChecked = true

    for(let i = -1; i<=1; i++)
        for(let j = -1; j<=1; j++){
            if(
                (x+i >= 0 && x+i < coll) &&
                (y+j >= 0 && y+j < rows) &&
                (i != 0 || j != 0)
            ){
                if(cells[x+i + (y+j)*rows].isBomb == true)
                    count++
            }
        }
    
    if(count != 0)
        cells[x + y*coll].number = count
}

Hasil penggunaan fungsi checkN pada setiap sel

Saya cuba menukar nilai sedikit seperti menambah -1 padanya dan +1 padanya tetapi masih tidak betul

P粉145543872
P粉145543872

membalas semua(1)
P粉124070451

Saya rasa masalahnya ialah pencampuran collrows:

                if(cells[x+i + (y+j)*rows].isBomb == true)
                //                   ^^^^

...

    cells[x + y*coll].number = count
    //          ^^^^

Kadangkala anda boleh mengarang mengikut cells[x + y*coll] 访问位于 x, y 处的单元格,有时通过 cells[x + y*rows] 访问。我认为 coll 是正确的(每个 y 都会跳过一整行,该行由 coll lajur), jadi cuba tukar kod anda kepada:

if(cells[x+i + (y+j)*colls].isBomb == true)
//                   ^^^^^ changed here

Dan pertimbangkan untuk mengekstrak logik ini ke dalam fungsinya sendiri supaya anda tidak membuat kesilapan ini lagi.

(== true部分也是多余的,就像在另一个if内部有一个ifSama, tetapi tidak akan menimbulkan masalah) p>

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan