Nous devons programmer une version JavaScript du jeu de la vie de Conway pour un projet d'école, mais nous sommes bloqués sur la boucle des bords. Le tout fonctionne bien, mais la fonction qui calcule le nombre de voisins ne fonctionne pas sur les cellules qui sont sur les bords (car il doit évaluer les valeurs en dehors du tableau, qui ne sont pas définies). Nous avons essayé plusieurs options, mais elles modifient toutes les fonctionnalités du reste du programme. Que faut-il ajouter pour travailler sur les bords de la grille?Programmation bloquée «Jeu de la vie» de Conway dans JS
var totalNeighbors = function(x, y) {
var total = 0;
if (x > 0 && cells[(x - 1)][y] == 1) {
total++;
}
if (x < (width - 1) && cells[x + 1][y] == 1) {
total++;
}
if (y > 0 && cells[x][y - 1] == 1) {
total++;
}
if (y < (height - 1) && cells[x][y + 1] == 1) {
total++;
}
if (y > 0 && x > 0 && cells[x - 1][y - 1] == 1) {
total++;
}
if (y > 0 && x < (width - 1) && cells[x + 1][y - 1] == 1) {
total++;
}
if (y < (height - 1) && x > 0 && cells[x - 1][y + 1] == 1) {
total++;
}
if (y < (height - 1) && x < (width - 1) && cells[x + 1][y + 1] == 1) {
total++;
}
return total;
};
Merci!
Vérifiez si vous faites un bloc sur le bord. Si oui, n'essayez pas d'accéder à ceux que vous ne pouvez pas. Je pense que tous ces 'if's peuvent être refactorisés. Faire cela rendra l'application du point un plus facile. (Si vous devez boucler des accès de bord autour du zéro, souvenez-vous que le module, '%', est votre ami.) –
Qu'entendez-vous par "bloc sur le bord"? Toute suggestion sur la façon de refactoriser le 'if's? Nous l'avons essayé et il s'est avéré être encore plus long haha. – Dat8StringGuy
Ce que je veux dire par "bloquer sur le bord" est une cellule qui n'a pas de cellules sur un ou plusieurs côtés (c'est-à-dire qu'il n'y a pas de cellules au dessus et/ou en dessous). épicerie, je peux revenir et essayer de la refactoriser. (Il pourrait se retrouver dans une solution plus longue * ligne * sage, mais cela devrait être une solution * plus propre.) –