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