gestionnaire de tournoi de football
Transcription
gestionnaire de tournoi de football
Dan Bismuth Projet Informatique GESTIONNAIRE DE TOURNOI DE FOOTBALL Remarque : Le programme n’étant pas terminé .Je détaillerai l’intégralité du cahier des charges, et j’expliquerai le raisonnement de chaque partie effectuée. 1/11 Dan Bismuth Projet Informatique Table des Matières I. II. Introduction ........................................................................................................................ 2 Cahier des charges.............................................................................................................. 3 A. Configuration des équipes.............................................................................................. 3 B. Configuration du tournoi................................................................................................ 3 C. Tirage aléatoire/direct des poules................................................................................... 4 D. Planning du tournoi ........................................................................................................ 4 E. Score des rencontres....................................................................................................... 4 F. Résultats des poules ....................................................................................................... 4 G. Phase Finale.................................................................................................................... 5 H. Sauvegarde ..................................................................................................................... 5 I. Impression ...................................................................................................................... 5 III. Le Programme ................................................................................................................ 6 A. Configuration des équipes.............................................................................................. 6 B. Configuration Tournoi.................................................................................................... 7 1. Tirage des poules........................................................................................................ 8 2. Planning...................................................................................................................... 8 C. Score des rencontres....................................................................................................... 9 D. Résultat des poules ....................................................................................................... 10 E. Phase Finale.................................................................................................................. 10 F. Sauvegarde ................................................................................................................... 11 G. Impression (à finir)....................................................................................................... 11 I. Introduction J’ai choisi ce sujet, car je pense qu’il peut répondre à un besoin des associations sportives pour multiples raisons. Voici les principales: • • • • Chaque club organise en moyenne six tournois par an. Les responsables étant des bénévoles, il est assez difficile de trouver un créneau pour préparer le tournoi (Planning du tournoi). Avec ce programme le tournoi se prépare en quelques minutes. Certaines équipes inscrites au tournoi, ne se présentent pas : il faut donc arranger au dernier moment les poules et le planning (moment de stress). Le programme offre la possibilité de faire toutes modifications et recalcule le déroulement du tournoi en quelques minutes. Durant l’intégralité du tournoi, il faut au minimum deux personnes à la table de marque pour assurer la gestion du tournoi (Point des équipes, but pour, but contre, résultat des rencontres). Tous les résultats doivent être conservés pour éviter toutes réclamations des équipes. A tous moments de la journée, plusieurs équipes viennent demander des renseignements sur le classement des équipes et sur les scores. Avec ce programme il est possible a tous moments,d’imprimer l’état du tournoi et de le distribuer. 2/11 Dan Bismuth Projet Informatique II. Cahier des charges Le but est de créer un gestionnaire de tournoi de football complet et efficace simplifiant l’organisation d’un tournoi de football. Un tournoi de football peut se décomposer en plusieurs parties : • • • • • • • Configuration des équipes Configuration du tournoi Tirage aléatoire/direct des poules Planning du tournoi Score des rencontres Résultat des poules Phase Finale De plus le programme doit offrir la possibilité d’imprimer chaque partie, et aussi le programme de la manifestation sportive (planning, détail poules, règlement, …). Comme tous programmes informatiques, il doit être robuste, sauvegardable, simple d’utilisation et agréable. A. Configuration des équipes L’utilisateur indique le nom de chaque équipe participant au tournoi. Il doit avoir la possibilité d’affecter directement ou aléatoirement l’équipe à une poule. De plus, pour des facilités d’utilisation, il doit être possible d’indiquer des informations sur l’équipe (Ex : nom des joueurs, nom des dirigeants, téléphone, N° licence, règlement, …) Pour que le programme soit robuste et agréable, l’utilisateur doit pouvoir modifier ou supprimer le descriptif de l’équipe, ou toutes données entrées. B. Configuration du tournoi Pour gérer correctement l’intégralité d’un tournoi de football, il faut préciser : • • • • • • • • Le Nombre d’équipes (Calculable par Configuration des équipes) Le Nombre de poules Le Nombre de terrain La Durée d’une rencontre La Configuration des points (Victoire, Nul, Défaite) L’Horaire de départ (heure et date si sur plusieurs jours) La Présence d’une pause et sa durée (pause repas par ex, ou précision de la fin de journée si plusieurs jours consécutifs sont nécessaires au tournoi) Le Nombre d’équipe pour les phases finales (utile seulement au début des phases finales) 3/11 Dan Bismuth Projet Informatique C. Tirage aléatoire/direct des poules Le choix d’affectation aléatoire ou direct des poules permet au programme d’être plus souple et généraliste dans son utilisation. Lorsque l’utilisateur a configuré les équipes, il a indiqué le type d’affectation de poule pour chaque équipe. Connaissant le nombre d’équipes et de poules, on affecte chaque équipe à une poule. La répartition des équipes dans les poules doit être homogène : il ne faut pas qu’une poule comporte 2 équipes et l’autre 4 équipes. D. Planning du tournoi Cette partie est la plus utile et la plus intéressante pour l’utilisateur. Le but est d’afficher le planning complet du tournoi en respectant certaines conditions : • • • • Aucune équipe ne peut jouer en même temps sur deux terrains. Aucune équipe ne doit jouer deux fois d’affiler : minimum un match de repos. Aucun match durant la pause. Si possible, chaque match d’une poule sur le même terrain. E. Score des rencontres Le marquage des scores doit se faire indépendamment du planning car une inversion de rencontre peut se faire au dernier moment. Le marquage du score doit offrir la possibilité de sélectionner les équipes et non de les écrire. Il est donc possible de faire le marquage du score par une boite de dialogue, en affichant comme état initial la rencontre du planning. Le score d’une rencontre doit automatiquement affecter les paramètres des équipes (classement, point, But-Pour, …). F. Résultats des poules Pour chaque équipe, on calculera : • Le Nombre de match joué • Le Nombre de Victoire, Nul, Défaite • Le Nombre du But-Pour, But-Contre et la différence • Le Nombre de Point en respectant les données du tournoi Pour chaque poule, il faut faire un classement des équipes selon leur nombre de point. S’ils ont le même nombre de point on privilégiera la différence des Buts-Pour avec les ButsContres, puis seulement les Buts-Pour. En cas d’égalité parfaite l’utilisateur pourra lui-même faire le classement. 4/11 Dan Bismuth G. Projet Informatique Phase Finale L’utilisateur sélectionne le nombre d’équipes qualifiées correspondant à un départ en 1/4 de finale, 1/8 de finale, 1/16 de finale,…. Une amélioration peut être effectuée en rendant la Phase Finale indépendant du nombre d’équipes (Ex : 9 équipes qualifiées). Le tirage étant aléatoire ou direct, l’utilisateur indiquera facilement les rencontres et les victoires. H. Sauvegarde Pour éviter tous problèmes liés à des événements extérieurs pouvant entraîner un arrêt non voulu du programme (batterie…) ou à un tournoi se déroulant sur plusieurs jours, le programme doit pouvoir sauvegarder toutes les données indispensables pour pouvoir le relancer dans le même état. I. Impression Au début de chaque manifestation sportive, le planning de la journée, les poules, le règlement est remis à chaque responsable d’équipe lui permettant de suivre facilement le déroulement du tournoi. Le programme doit donc offrir la possibilité d’imprimer un document pouvant être directement distribué aux responsables. De plus, il sera possible d’imprimer chaque partie du tournoi. 5/11 Dan Bismuth Projet Informatique III.Le Programme La présentation du programme se fera par étapes chronologiques de l’utilisateur avec quelques explications de la programmation. A. Configuration des équipes Au départ l’utilisateur configure toutes les équipes participants au tournoi, c'est-à-dire le nom de l’équipe, l’affectation de poule, des commentaires qui seront la plus part du temps le nom des joueurs. L’utilisateur peut donc laisser l’affectation aléatoire ou forcer la poule de l’équipe. Il peut ensuite à tous moments visualiser et/ou modifier les informations de l’équipe. Programmation : Pour stocker toutes les équipes avec leurs points, on créer un tableau ’m_tab_équipe’ dans le document de classe Céquipe ayant comme variable :’ m_Nom_Equipe’, ‘m_Poule_Equipe’, ‘m_Joueurs_Equipe’ ‘m_NbMatch’, ‘m_NbPoint’, ‘m_Vict’, ‘m_Nul’, ‘m_Def’, ‘m_ButMis’ et ‘m_ButEnc’. Pour modifier une équipe, on incrémente ou décrémente l’indice du tableau (NEXT, PREV) et on supprime ou enregistre les nouvelle information (DEL, OK) 6/11 Dan Bismuth Projet Informatique B. Configuration Tournoi Dans cette partie, l’utilisateur configure son tournoi, à savoir : • Le Nombre de poule. • Le Nombre de terrain. • La Durée des matchs. • Le Nb de Points : Victoire, Nul, Défaite. • L’Heure de départ. • Si Pause : Horaire. Programmation : Toutes ces données seront sauvegardées dans une variable du document ‘m_tournoi‘ du type Ctounoi (Classe contenant comme variable toutes ces données). Lorsque l’utilisateur validera ces informations, les poules et le planning seront calculés. 7/11 Dan Bismuth Projet Informatique 1. Tirage des poules Le but est de laisser un maximum de liberté à l’utilisateur, pour créer les poules. C’est pourquoi, il a la possibilité de fixer une poule précise à une équipe. Le tirage des poules se fait dans une fonction du document : Programmation : ’AleaPoule’. Au départ, je crée un tableau d’entier ‘m_libre’ correspondant aux indices des équipes dont leur poule sera fixée aléatoirement. Ensuite, je crée un tableau ‘t’ d’entier de dimension le nombre de poule. Ainsi, pour chaque poule, j’ai le nombre d’équipe disponible par poule. Je tire aléatoirement un élément de ‘m_libre’, donc une équipe dont la poule n’est pas encore fixée. J’affecte à cette équipe une poule ayant une place disponible, et je décrémente le nombre de place disponible pour la poule (tableau ‘t’). 2. Planning Le but est de réaliser le déroulement du tournoi, c'est-à-dire la liste des rencontres par terrain en tenant compte des horaires (heure départ, heure pause). Pour que le planning soit optimal, il faut qu’aucune équipe ne joue en même temps sur plusieurs terrains, et, un intervalle minimum, entre deux matchs d’une équipe, de deux matchs. Néanmoins, pour un certain nombre d’équipe et de poule, cette condition n’est pas réalisable. Il serait donc judicieux, par la suite, de faire dépendre l’intervalle avec le nombre d’équipe et de poules. Tous d’abord on crée un tableau ‘m-tab_planning’ de ‘CMatch’ deux Programmation : dimensions :’NbSerie’ et ‘NbTerrain’ .Ensuite on affecte aléatoirement une rencontre à ‘m_tab_planning’ en essayant de respecter : chaque match d’une poule sur le même terrain. Puis on débute la fonction ‘Placementlegal’ et ‘Optimisation’: • • Placementlegal : Cette fonction arrange le tableau ‘m_tab_planning’ pour satisfaire une des conditions : aucune équipe ne doit jouer en même temps sur plusieurs terrain. Optimisation : Le but est d’organiser les rencontres sur chaque terrain pour satisfaire la condition sur l’intervalle. Pour cela on utilise le critère de gain définit de la manière suivante : +0 +0 +0 +1 +1 +1 +2 +2 +2 Rencontre +2 +2 +2 +1 +1 +1 +0 +0 +0 8/11 Dan Bismuth • Projet Informatique Algorithme de Optimisation : 1. 2. 3. 4. On calcule le gain total du tournoi On choisit aléatoirement une rencontre du tournoi On calcule le gain de cette rencontre On recherche une permutation diminuant le gain différentiel (Diff=NvGain-AncGain, avec NvGain=NvGain1+NvGain2 et AncGain=Gain1+Gain2) 5. Si le gain différentiel est strictement inférieur à ‘PermutLimite’, on effectue la permutation. 6. Tant que Gain ou le Watch Dog sont différents de zéro, on retourne en 2. Au départ ‘PermutLimite’ est à 0, mais lorsque le Watch Dog à diminuer d’un tiers ‘PermutLimite’ passe à 1. C. Score des rencontres L’utilisateur sélectionne tout d’abord la poule de la rencontre, il s’affiche ensuite deux équipes de la poule. En cliquant sur les boutons de défilement, il s’affiche uniquement les équipes appartenant à la poule mais différentes de l’autre équipe. A la validation, le score est sauvegardé, et, les points et le classement des équipes sont calculés puis affichés. Il est aussi possible de modifier le score d’une rencontre, il suffit de sélectionner la rencontre et d’écrire le nouveau score. Cette modification affectera automatiquement tous les points des deux équipes. Programmation : Le score est sauvegardé dans ‘tab_planning’. Selon le score de la rencontre, on affecte dans ‘ m_tab_equipe’ : • Le nombre de point (Ex : si victoire incrémentation du nombre de point par le nombre de point correspondant à la victoire) • Le nombre de match (incrémentation simple) • Le nombre de victoire, nul, défaite • Le nombre de but pour et contre S’il faut modifier le score : on supprime l’ancienne rencontre en affectant bien les points des équipes puis on affecte le nouveau score. 9/11 Dan Bismuth Projet Informatique D. Résultat des poules Ici, on affiche le classement des équipes pour une poule sélectionnée. Il est aussi possible d’afficher tous les scores d’une poule. Le classement des équipes se fait automatiquement à chaque score indiqué suivant le critère : maximum de point, maximum de différence de but, maximum de but marqué. E. Phase Finale Au départ, l’utilisateur indique le nombre d’équipe qualifiée (pour l’instant 2n). Pour laisser plus de liberté aux utilisateurs le nom des équipes qualifiées est complètement indépendant des phases qualificatives. Ensuite un simple clic gauche édite le nom de l’équipe, un double clic gauche indique la victoire de l’équipe, et un clic droit annule la victoire de l’équipe (à finir). 10/11 Dan Bismuth Projet Informatique Programmation : On crée un nouveau tableau de Cequipe de dimension correspondant au nombre d’équipes qualifieés, en initialisant le nom des équipes à NULL, et le nombre de point à 0. Lorsqu’on désire entrer une équipe, il suffit de cliquer sur le bouton droit pour indiquer l’équipe qualifiée : pour cela on repère le point où l’utilisateur à cliquer. Ensuite, lorsqu’on désire qualifier une équipe, on double clique sur l’équipe : on utilise l’entier NbPoint que l’on initialise à 0 et que l’on incrémente à chaque qualification de l’équipe. De même, si on désire annuler une qualification on décrémente l’entier. Problèmes rencontrés : • • Détecter le rectangle cliqué (idée : On crée un petit rectangle basé sur point et on calcule l’intersection de ce rectangle avec les autres rectangles, si elle est non nul le rectangle est le bon. Faire la différence entre un clic gauche est un double clic gauche (La fonction double clic n’est jamais appelé car le simple clic se déclanche avant). F. Sauvegarde Pour que l’on puisse interrompre et reprendre le programme quelque soit l’état, on doit sauvegarder les paramètres suivants : • • • • • • m_tournoi m_tab-equipe m_tab_PhFinal NbSerie (pour redéfinir la dimension de m_tab_planning au chargement) m_tab_planning (déclaré dynamiquement : il faut, après chaque chargement, déclarer m_tab_planning) Reglement G. Impression (à finir) Pour satisfaire correctement le cahier des charges, il faut pouvoir sélectionner le type d’impression (boite de dialogue) : Le planning de la journée ou la visualisation. Programmation (Idée) : Lorsqu’on sélectionne l’aperçu avant impression ou l’impression, il faut demander le type. Ensuite, on redéfinit la fonction OnPrint en fonction du type. Pour le planning de la journée, il faut imprimer le règlement, les poules et le planning Problèmes rencontrés : • • Changement de la taille et de la police du texte Impression sur plusieurs pages 11/11