Créer une page web en HTML pour gérer des tournois

John43 - Modifié le 21 janv. 2024 à 19:00
 John43 - 21 janv. 2024 à 21:37

Bonjour, 

je suis débutant en codage HTML, je souhaiterais coder une page web simple en html javascript permettant d'obtenir une liste de matchs à jouer en fonction d'un nombre de joueurs défini par l'utilisateur et pouvant être renommés. Je souhaiterai que chaque joueurs se rencontrent tous une seule fois. J'ai réussi à obtenir un tableau ou je peux choisir le nombre de joueurs et les renommer mais impossible de trouver comment faire apparaitre l'ordre des matchs suivant une répartition équilibrée des joueurs au fur et à mesure des rencontres. En effet je souhaiterais que l'ordre des matchs fasse apparaître de façon équilibré les joueurs. Autrement dit pour un tournoi à 5 équipes par exemple obtenir

1: Joueur 1 Joueur 2

2: Joueur 3 Joueur 4

3: Joueur 5 Joueur 1

4: Joueur 2 Joueur 3

5: Joueur 4 Joueur 5

6: Joueur 1 Joueur 3

7: Joueur 2 Joueur 4

8: Joueur 5 Joueur 2

9: Joueur 1 Joueur 4

10: Joueur 3 Joueur 5

Je ne sais pas si je suis très clair, pas évident à expliquer. 

Voici ce que j'ai réussi à obtenir, je peux choisir et nommer les joueurs, ils se rencontrent bien tous une fois mais je n'arrive pas à modifier le code pour que les joueurs soient répartis de façon équilibrées d'un match à l'autre comme dans l'exemple ci-dessus.... 

Merci d'avance pour vos retours!!!

Cordialement

John


Windows / Edge 120.0.0.0

A voir également:

2 réponses

jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024 4 658
21 janv. 2024 à 21:09

Bonjour,

Pour commencer, je déplace ta question dans le forum Javascript (la question étant d'avantage lié à ce langage de programmation... qu'à l'html )

Ensuite, pour avoir de l'aide il va falloir préciser si ton souci se trouve au niveau du code lui même ou de la "logique" que tu veux mettre en place;

Il serait bien également de nous montrer ton code déjà réalisé.

Il faudrait également nous indiquer ce que tu appelles "épartis de façon équilibrées" .. et de quelle manière, mathématiquement tu peux l'exprimer selon toi.


0

Bonsoir et merci pour le retour (désolé pour avoir placé le sujet dans une mauvaise section).

Je ne sais pas trop d'où vient mon problème... je pense qu'il manque du code pour que l'ordre des matchs corresponde à mes critères. Par "répartis de façon équilibré" je souhaiterai que toutes les équipes jouent une première fois sur les premières rencontres, puis une seconde foi avec des matchs différents puis une troisième fois... en fonction du nombre d'équipes totales. Dans le modèle utilisé dont le code est ci dessous certaines équipes jouent beaucoup de matchs au début et en enchainent des matchs consécutifs alors que d'autres n'apparaissent qu'en fin de tournoi... J'espère être plus clair...

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Générateur de Matchs</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      text-align: center;
      margin: 20px;
    }
  </style>
</head>
<body>

  <h2>Générateur de Matchs</h2>
  
  <label for="numEquipes">Nombre d'équipes :</label>
  <input type="number" id="numEquipes" min="2" value="5">

  <div id="equipes">
    <p>Entrez le nom des équipes :</p>
    <div id="equipeInputs"></div>
  </div>

  <button onclick="genererMatchs()">Générer les matchs</button>

  <div id="listeMatchs"></div>

  <script>
    function genererMatchs() {
      var numEquipes = parseInt(document.getElementById('numEquipes').value);

      if (numEquipes < 2) {
        alert("Veuillez entrer un nombre d'équipes valide (au moins 2).");
        return;
      }

      var equipeList = [];
      for (var i = 0; i < numEquipes; i++) {
        var equipeNom = prompt("Nom de l'équipe " + (i + 1) + " :");
        if (!equipeNom) {
          alert("Veuillez entrer un nom pour chaque équipe.");
          return;
        }
        equipeList.push(equipeNom);
      }

      var listeMatchs = document.getElementById('listeMatchs');
      listeMatchs.innerHTML = '';

      for (var i = 0; i < numEquipes - 1; i++) {
        for (var j = i + 1; j < numEquipes; j++) {
          var match = document.createElement('p');
          match.textContent = equipeList[i] + ' vs ' + equipeList[j];
          listeMatchs.appendChild(match);
        }
      }
    }
  </script>

</body>
</html>

0