Tournament generator

iamtheone 39 Messages postés lundi 10 avril 2017Date d'inscription 8 mai 2017 Dernière intervention - 20 avril 2017 à 21:47 - Dernière réponse : iamtheone 39 Messages postés lundi 10 avril 2017Date d'inscription 8 mai 2017 Dernière intervention
- 21 avril 2017 à 11:50
Bonjour,
J'essaie de faire un programme qui génère l'arbre d'un tournoi avec comme paramètres le nom du tournoi, le nombre de joueurs/équipes et le nom de chaque joueur/équipe. Je n'ai pas encore réfléchi à la mise en forme de l'arbre. Avec mon code actuel qui suit, j'essaie seulement de faire entrer les différents paramètres, notamment le nom de tous les joueurs/équipes dans une variable array.
<!DOCTYPE html>
<html>
<head>
<title>Tournament</title>
</head>
<body>

<h2>Tournament Generator</h2>
<p>This this the explication.</p>
<br /><hr /><br />
<form name="tform">
Tournament name <input type="text" name="tname" maxlength="21" placeholder="max 21 caracters"></input><br />
How many players/teams <input type="number" name="tplayer" value="1"></input><br />
<input type="button" name="tnext" value="Next" onClick="tnext2()"></input>
</form>
<br /><hr><br /><br />
<div id="tboxes"></div>
<br /><br /><br /><br />

<script>

var tplayers; var tboxes;

function tnext2() {
    tplayers = eval(document.tform.tplayer.value);
    tboxes = "<form name='tboxes'>";
    for (i=0; i>tplayers; i++) {
        tboxes += i + " <input type='text' name=" + i + "></input><br />"; 
    }
    tboxes += "<input type='button' name='tcreate' value='tCreate' onClick='tcreate2(tplayers)'></input></form>";
   document.getElementById("tboxes").innerHTML = tboxes; 
}

function tcreate2(tplayers) {
   rdm = new Array(tplayers);
   for (o=0; o>tplayers; o++) {
      rdm[o] = document.tboxes.o.value;
   }
   document.getElementById("tboxes").innerHTML = "";
   for (p=0; p>tplayers; p++) {
       var choice = rdm[Math.floor(Math.random() * rdm.length)];
        //affichage test
        document.getElementById("tboxes").innerHTML = choice + "<br /";
       rdm.splice(choice, 1);
    }
}

</script>

</body>
</html>

Mais le code ne marche pas : aucun input text ne s'affiche dans la div; seulement le bouton. Et j'ai testé, le problème est que les for de mon script ne se lancent pas du tout... Je ne sais vraiment pas pourquoi :/ Help pls merci :))
Afficher la suite 
39Messages postés lundi 10 avril 2017Date d'inscription 8 mai 2017 Dernière intervention

7 réponses

Répondre au sujet
jordane45 19213 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 12 décembre 2017 Dernière intervention - 20 avril 2017 à 23:43
0
Utile
1
for (i=0; i<tplayers; i++) {

iamtheone 39 Messages postés lundi 10 avril 2017Date d'inscription 8 mai 2017 Dernière intervention - 21 avril 2017 à 00:47
Ça marche merci bien mais c'est illogique non ? i est déjà inférieur...
Commenter la réponse de jordane45
@karamel 1649 Messages postés vendredi 9 mai 2008Date d'inscriptionModérateurStatut 9 décembre 2017 Dernière intervention - 20 avril 2017 à 23:54
0
Utile
bonjour

et a la place de eval met plutot parseInt

parseInt(document.tform.tplayer.value) 

Commenter la réponse de @karamel
iamtheone 39 Messages postés lundi 10 avril 2017Date d'inscription 8 mai 2017 Dernière intervention - 21 avril 2017 à 00:52
0
Utile
3
Un dernier petit problème :
<script>

var tplayers; var tboxes;

function tnext2() {
    tplayers = eval(document.tform.tplayer.value);
    tboxes = "<form name='tboxes'>";
    for (i=0; i<tplayers; i++) {
        tboxes += i + " <input type='text' id=" + i + "></input><br />"; 
    }
    tboxes += "<input type='button' name='tcreate' value='tCreate' onClick='tcreate2(tplayers)'></input></form>";
   document.getElementById("tboxes").innerHTML = tboxes; 
}

function tcreate2(tplayers) {
   rdm = new Array(tplayers);
   for (o=0; o<tplayers; o++) {
      rdm[o] = document.getElementById(o).value;
   }
   document.getElementById("tboxes").innerHTML = "";
   for (p=0; p<tplayers; p++) {
       var choice = rdm[Math.floor(Math.random() * rdm.length)];
        //affichage test
        document.getElementById("tboxes").innerHTML += choice + "<br />";
       rdm.splice(choice, 1);
    }
}

</script>

Je souhaite afficher les valeurs des input dans un ordre aléatoire mais où une même valeur ne peut pas se répéter. Donc dans mon dernier for je supprime à chaque fois la variable de l'array qui a été affichée mais ça ne fonctionne pas... Ça s'exécute comme un random normal...
iamtheone 39 Messages postés lundi 10 avril 2017Date d'inscription 8 mai 2017 Dernière intervention - 21 avril 2017 à 09:01
Ah je viens de trouver. La variable choice définie la value d'une variable de l'array. Et pas son emplacement dans l'array comme le laisse supposer ma ligne splice. Ducoup j'ai fais :
rdm.splice(rdm.indexOf(choice), 1);
et ça marche très bien.
Il me manque plus qu'à mettre les valeurs dans l'arbre du tournoi. Je vous cache pas que j'ai aucune idée...
jordane45 19213 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 12 décembre 2017 Dernière intervention > iamtheone 39 Messages postés lundi 10 avril 2017Date d'inscription 8 mai 2017 Dernière intervention - 21 avril 2017 à 09:16
iamtheone 39 Messages postés lundi 10 avril 2017Date d'inscription 8 mai 2017 Dernière intervention > jordane45 19213 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 12 décembre 2017 Dernière intervention - 21 avril 2017 à 11:50
Merci bien mais je vais essayer moi même, je suis là pour apprendre... et j'aimerais le faire interactif ...
Commenter la réponse de iamtheone

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.