Javascript / boucle infinie dans ma fonction.
Résolu
Angy
-
Angy -
Angy -
Bonjour,
J'essaie de réaliser un petit jeu de cartes.
Je laisse au joueur le choix entre 4 decks de cartes différents : 32, 52, 64 ou 104 cartes via 4 boutons affichés à l'écran.
Une fois le deck choisi je dois mélanger les cartes de celui-ci pour créer un deck avec cartes aléatoires.
Pour cela j'ai créé la fonction suivante qui, en fonction du "DeckChoisi", va prendre aléatoirement chacune des cartes du tableaux "TabBanqueDeckx" (avec x le deck choisi :32/52/64/104) pour ensuite les replacer dans le "TabCartesMelangees" (le deck tout mélangé).
Mon problème est le suivant : je rencontre une boucle infinie avec "DeckChoisi=64" et "DeckChoisi=104" mais pas avec "DeckChoisi=32" ou "DeckChoisi=52".
Quelqu'un voit ce qui cloche ?
Après 2 bonnes heures de recherche je commence vraiment à désespérer :-/
J'essaie de réaliser un petit jeu de cartes.
Je laisse au joueur le choix entre 4 decks de cartes différents : 32, 52, 64 ou 104 cartes via 4 boutons affichés à l'écran.
Une fois le deck choisi je dois mélanger les cartes de celui-ci pour créer un deck avec cartes aléatoires.
Pour cela j'ai créé la fonction suivante qui, en fonction du "DeckChoisi", va prendre aléatoirement chacune des cartes du tableaux "TabBanqueDeckx" (avec x le deck choisi :32/52/64/104) pour ensuite les replacer dans le "TabCartesMelangees" (le deck tout mélangé).
Mon problème est le suivant : je rencontre une boucle infinie avec "DeckChoisi=64" et "DeckChoisi=104" mais pas avec "DeckChoisi=32" ou "DeckChoisi=52".
Quelqu'un voit ce qui cloche ?
Après 2 bonnes heures de recherche je commence vraiment à désespérer :-/
function MelangeCartes () { TabCartesMelangees=new Array (); if(DeckChoisi==32) { for (var i=0;i<DeckChoisi;i++) { var e=parseInt(Math.random()*DeckChoisi); for (var v=0; v<DeckChoisi;v++) { while (TabCartesMelangees[v]==TabBanqueDeck32[e]) { v=0; e=parseInt(Math.random()*DeckChoisi); } q=e; } TabCartesMelangees[i]=TabBanqueDeck32[q]; } } if(DeckChoisi==52) { for (var i=0;i<DeckChoisi;i++) { var e=parseInt(Math.random()*DeckChoisi); for (var v=0; v<DeckChoisi;v++) { while (TabCartesMelangees[v]==TabBanqueDeck52[e]) { v=0; e=parseInt(Math.random()*DeckChoisi); } q=e; } TabCartesMelangees[i]=TabBanqueDeck52[q]; } } if(DeckChoisi==64) { for (var i=0;i<DeckChoisi;i++) { var e=parseInt(Math.random()*DeckChoisi); for (var v=0; v<DeckChoisi;v++) { while (TabCartesMelangees[v]==TabBanqueDeck64[e]) { e=parseInt(Math.random()*DeckChoisi); v=0; } q=e; } TabCartesMelangees[i]=TabBanqueDeck64[q]; } } if(DeckChoisi==104) { for (var i=0;i<DeckChoisi;i++) { var e=parseInt(Math.random()*DeckChoisi); for (var v=0; v<DeckChoisi;v++) { while (TabCartesMelangees[v]==TabBanqueDeck104[e]) { v=0; e=parseInt(Math.random()*DeckChoisi); } q=e; } TabCartesMelangees[i]=TabBanqueDeck104[q]; } } }
A voir également:
- Javascript / boucle infinie dans ma fonction.
- Fonction si et - Guide
- Telecharger javascript - Télécharger - Langages
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer dans word - Guide
3 réponses
parseInt(Math.random()
il me semble que ça te retourne toujours 1 (a verifier)
essayes plutot avec parseFloat
il me semble que ça te retourne toujours 1 (a verifier)
essayes plutot avec parseFloat
Merci Alain_42. Ca plaisir d'avoir eu une réponse.
Cependant non, mon parseInt(Math.random()*DeckChoisi) fonctionne bien : je multiplie le nombre aléatoire puis je le convertie, ainsi je n'obtiens pas que des 1 ;-)
J'ai trouvé d'ou venait mon problème : les tableaux qui me servaient de banques de cartes pour les decks 64 et 104 possédaient en fait 2 fois chacune des cartes sauf que mes algorithmes de pioche aléatoire ne permettaient pas de composer avec des cartes identiques.
Bref, je me comprends ^^, problème résolu.
Cependant non, mon parseInt(Math.random()*DeckChoisi) fonctionne bien : je multiplie le nombre aléatoire puis je le convertie, ainsi je n'obtiens pas que des 1 ;-)
J'ai trouvé d'ou venait mon problème : les tableaux qui me servaient de banques de cartes pour les decks 64 et 104 possédaient en fait 2 fois chacune des cartes sauf que mes algorithmes de pioche aléatoire ne permettaient pas de composer avec des cartes identiques.
Bref, je me comprends ^^, problème résolu.