Rumah > Soal Jawab > teks badan
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粉1240704512024-01-18 00:23:38
Saya rasa masalahnya ialah pencampuran coll
和 rows
:
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
内部有一个if
Sama, tetapi tidak akan menimbulkan masalah) p>