Le jeu de dragueur de mines en HTML, CSS et JS ne compte pas correctement les unités de bombes adjacentes
P粉145543872
P粉145543872 2024-01-17 08:35:00
0
1
421

J'essaie de recréer le dragueur de mines avec html, css et javascript, je dois vérifier les cellules adjacentes pour voir si c'est une bombe et compter, mais il ne semble pas vérifier la bonne partie de la cellule. J'utilise une classe de cellules avec x, y, isBomb, isChecked et un nombre qui représente le nombre de ses voisins qui sont des bombes. J'utilise également un tableau 1D pour stocker la grille de cellules. Ma question est donc de savoir s'il y a quelque chose qui ne va pas avec cette fonction ou dois-je réécrire le code en utilisant un tableau 2D inséré

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
}

Le résultat de l'utilisation de la fonction checkN sur chaque cellule

J'ai essayé de changer un peu les valeurs, comme en y ajoutant -1 et +1 mais ce n'est toujours pas correct

P粉145543872
P粉145543872

répondre à tous(1)
P粉124070451

Je pense que le problème vient du mixage collrows :

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

...

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

Parfois, vous pouvez le composer par cells[x + y*coll] 访问位于 x, y 处的单元格,有时通过 cells[x + y*rows] 访问。我认为 coll 是正确的(每个 y 都会跳过一整行,该行由 coll colonnes), alors essayez de changer votre code comme suit :

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

Et pensez à extraire cette logique dans sa propre fonction afin de ne plus commettre cette erreur.

(== true部分也是多余的,就像在另一个if内部有一个ifIdem, mais ni l'un ni l'autre ne posera de problèmes) p>

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!