J'ai 5 x 5 table contenant différentes cellules colorées. Si toutes les cellules tournent une couleur, l'utilisateur a "gagné".
Table: P>
let hasWon = false;
let myBoard = board; // this is the 5x5 table i'm iterating over
for(let i = 0; i < myBoard.length; i ++){ // looping over board rows
for(let j = 0; j < myBoard.length; j ++){ // looping over each cell in each row
let boardCells = myBoard[j]; // this returns an array of `true` or `false` cells
(How do i check here if all the cells are false and return the answer so i can store it
in the `hasWon` variable above?)
}
}
this.setState({
board: board,
hasWon: hasWon
});
}
3 Réponses :
Comme sommation en mathématiques, le et ( Qu'est-ce que cela signifie que si vous mettez à jour à plusieurs reprises votre && code>) possède la propriété associative et commutative. p>
haswon code> dans une boucle faisant quelque chose comme haswon = haswon &&! Cellvalue ! Cellvalue, il produira le même résultat que la vérification si Chaque cellule est fausse. p>
Je ne sais pas dans quel contexte vous utilisez cela, mais j'ai fait quelque chose comme ça avant. Fondamentalement, vous générez une sortie, mais vous n'avez aucun moyen de voir l'état des cellules, non?
Ce que je ferais dans cette situation, ajouterait un gestionnaire d'événements (probablement onclick) comme ceci: Cet autre attribut peut être un pupitre de 's p> vous pouvez utilisez ceci. Si vous n'avez pas compris cette réponse, n'hésitez pas à commenter ci-dessous afin que je puisse aider p> p>
Hey, je connais l'état des cellules par console.logging code> mais j'ai juste besoin de boucler sur toutes les cellules et de retourner si elles étaient toutes false code> si l'appel des cellules étaient égaux à False, l'utilisateur a gagné le jeu!
Oh, c'est comme une celles des casinos dans les films. Pour les couleurs.
Quelque chose comme: avec goto (étiquettes) sera encore plus rapide mais il est anti-motif. p> ou vous pouvez utiliser très court terme: p>
Cela fonctionne et c'est ce que je voulais, mais j'ai aussi la regarder correctement et voir comment et pourquoi!
Pourquoi vérifiez-vous si gagné est faux dans la première boucle? @Arthurrubens
Dès que je trouve une valeur «vraie», je sors de la deuxième boucle, après cela, je dois sortir du premier. C'est pourquoi je le vérifie. Pour éviter ces chèques, vous pouvez utiliser tandis que () contrôler ou même goto. Le dernier est le moyen le plus rapide.
Ok merci l'explication et le code aide que je vais écrire ça en bas :)
Vous n'utilisez pas la variable
i code> dans votre boucle imbriquée. Estmyboard code> un tableau plat ou est-ce une matrice de tableaux? Soit vous avez besoin de référencermyboard [j] [i] [i] code> pour un tableau de tableaux oumyboard [j * myboard.length + i] code> pour un tableau plat.En ce qui concerne votre question initiale, commencez peut-être avec le cas simple de la manière dont vous détermineriez-vous que tous sont faux pour 2 variables booléennes, puis 3 variables booléennes, essayez ensuite d'extrapoler cela à la boucle imbriquée.
@Ianwilson
myboard code> est une matrice de tableaux:(5) [tableau (5), tableau (5), tableau (5), tableau (5), tableau (5)] 0: (5) [faux, faux, vrai, vrai, vrai] 1: (5) [vrai, faux, faux, faux, true] 2: (5) [faux, faux, faux, faux, faux] 3: (5 ) [FALSE, TRUE, FAUX, FAUX, FALSE] 4: (5) [FAUX, FAUX, VRAI, FAUX, FAUX] CODE>