Jeu de la vie en Javascript
hichams
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
hichams Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
hichams Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai essayé de faire le jeu de la vie en Javascript mais je crois que je ne pourrai pas avancer + sans aide.
Je suis parti sur un Jeu de la Vie avec voisinage de Moore (la cellule change selon les 8 autour d'elle).
Code couleur blanc pour les cellules en vie et noir pour les cellules mortes. Et voilà les règles:
- si n (nombre de cellules voisines en vie) <2 ou >3 alors l'état suivant de la cellule est "mort" (cellule noire)
- si n = 2, l'état de la cellule ne changera pas
- si n = 3, l'état suivant de la cellule est "en vie" (cellule blanche)
Comme vous pourrez le constater, seule la cellule ligne 1 colonne 1 fonctionne comme prévu peu importe la taille du tableau.
Je vous partage sans plus attendre mon résultat :
j'ai essayé de faire le jeu de la vie en Javascript mais je crois que je ne pourrai pas avancer + sans aide.
Je suis parti sur un Jeu de la Vie avec voisinage de Moore (la cellule change selon les 8 autour d'elle).
Code couleur blanc pour les cellules en vie et noir pour les cellules mortes. Et voilà les règles:
- si n (nombre de cellules voisines en vie) <2 ou >3 alors l'état suivant de la cellule est "mort" (cellule noire)
- si n = 2, l'état de la cellule ne changera pas
- si n = 3, l'état suivant de la cellule est "en vie" (cellule blanche)
Comme vous pourrez le constater, seule la cellule ligne 1 colonne 1 fonctionne comme prévu peu importe la taille du tableau.
Je vous partage sans plus attendre mon résultat :
<!DOCTYPE html> <html> <body> <style> table { height: 300px; width: 300px; margin: 0; padding: 0; border-collapse: collapse; } td { border: 1px solid #A4A4A4; border-spacing: 0; height: 30px; width: 10px; margin: 0; padding: 0; } .black { background: #000000;} .white { background: #FFFFFF;} </style> <input type="button" id="acte" value="start" onclick="controle();" style="position:absolute;margin-top:140px;margin-left:350px;"/> <script> var col = 3; row = 3; started = 0; document.write("<table class='table'>") for (i=0; i<row; i++) { document.write("<tr>"); for (j=0; j<col; j++) { document.write("<td class='black' onclick='swap(this)' id='l" + i + "c" + j +"'></td>");} document.write("</tr>");} document.write("</table>"); function controle(){ //fonction qui permet de faire une pause if (started==1){ document.getElementById('acte').value="continue"; started=0;} else{ document.getElementById('acte').value="stop"; started=1; change();} } function swap(cell){ if (cell.className == "black"){ cell.className = "white";} else if (cell.className == "white"){ cell.className = "black";} } function change(){ for (i= 1; i<row-1; i++){ for (j= 1; j<col-1; j++){ var n=0; for (x= 0; x<3; x++){ for (y= 0; y<3; y++){ if(document.getElementById('l'+x+'c'+y).className == "white"){n++;} //alert(n+'l'+x+'c'+y); } } //alert(n+'l'+i+'c'+j); if(document.getElementById('l'+i+'c'+j).className == "white"){n--;} if(n<2 || n>3){(document.getElementById('l'+i+'c'+j).className = "black");} else if(n==3) {(document.getElementById('l'+i+'c'+j).className = "white");} } } setTimeout('start();',1000); //se rapelle } </script> </body> </html>
A voir également:
- Jeu de la vie en Javascript
- 94 jeu - Télécharger - Puzzle & Réflexion
- 94 degrés jeu - Télécharger - Divers Jeux
- Jeu zuma - Télécharger - Jeux vidéo
- Logo jeu - Télécharger - Jeux vidéo
- Jeux de moto: jeu de course 3d - Télécharger - Course
Mais je doute qu'il y ait un lien avec le reste.
Celles qui sont au bord ... Je sais pas en fait. Mais même sans les bords, en rajoutant des cases au tableau (en modifiant juste le nombre de colonnes et lignes) il n'y a toujours que la ligne 1 colonne 1 qui respecte les règles et ça me dépasse ... Je bloque totalement.
Pense, lorsque tu apportes des modifications à des scripts JS (ou à du css au passage....) à vider le cache de ton navigateur.
En attendant, ajoute des console.log dans ton code pour essayer de voir ce qui s'y passe. ça devrait t'aider à comprendre ce qui bloque dans ton code.
Si tu ne trouves pas, décrit (étape par étape) le fonctionnement du code voulu. Ce n'est qu'après cette phase de réflexion que l'on peut réellement écrire correctement son code et, si besoin, expliquer son besoin aux autres.
J'espère que c'est + clair. Désolé mais l'espacement ne fonctionne pas quand je valide...Impossible d'aérer..
Explications ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Ensuite, quand tu dis :
C'est à dire ?
Car là .. le code fait ce qui est écrit.... qu'attends tu exactement comme comportement ?
Ce que je te demande c'est d'expliquer de façon écrite le fonctionnement attendu de ton code (pas des commentaires dans ton code... mais "l’énoncé / l'algo " de ce que tu cherches à faire...
Je te donne le début :
Etape 1 : Je créé un tableau de x cases , y colonnes
Etape 2 : Je clique sur une cellule => ça change sa couleur
Etape 3 : ....
Pour le fonctionnement:
Etape 1 : Je créé un tableau de x cases , y colonnes
Etape 2 : Je clique sur une cellule => ça change sa couleur
Etape 3 : Je parcours chaque cellule du tableau pour pouvoir compter ses voisins "en vie" (avec boucle for)
Etape 4 : Je donne la valeur (noir ou blanc) de la cellule en fonction de ses voisins
Etape 5 : La cellule change de couleur (ou pas) au stade suivant
et ainsi de suite pour chaque case parcourue. J'espère avoir été assez clair.
J'essaye à nouveau de mettre le code parc'que c'est un peu frustrant de le voir aussi illisible: