Remplir un document type à renvoyer à la fédération (version papier signée par les deux joueurs)avec : noms, type de partie jouée, lieu, remarques sur le match (pour les archives)
publier les archives, le classement complet, les stats de chaque joueur : totale transparence
- Table SubmitTable
- Description : Regroupe l’ensemble des match soumis par les joueurs
- Permissions :
- Joueurs : Ajout de “match entry”
- Staff : Validation de “match entry” et suppression de ligne (invalide ou validée)
- Data non permanente (car modifiable et supprimable)
- Notes :
- Il y aura moyen de split les matricule grâce aux “;” (split(“;”) en python et explode(“;”) en php)
- Pour la colonne “validée” ça permet de trier les match à valider par le calcul d’elo et à n’afficher que ceux validé avec la database request
- Table PlayerTable
- Description : Regroupe l’ensemble des joueurs et leurs infos (matricule, ELO, etc…)
- Permissions :
- Joueurs : Vision par la page correspondante du site
- Staff : Modification
- Données permanente
- Table HistoryTable
- Description : Regroupe l’ensemble des matchs joués par chaque joueurs
- Permissions :
- Joueurs : Vision par la page correspondante du site
- Staff : Modification automatique après une validation de match (voir première table)
- Données permanente
- Notes : C’est une table intermédiaire qui permet très rapidement de faire le tri entre les joueurs et les match joués pour faire d’une pierre deux coup lors qu’on devra les afficher sur le site. Et ça évite de faire une table par joueurs ou de devoir modifier le nombre de colonne.
| ID | Date | Dispositif (optionnel) | Joueurs (matricule) | Scores | Checked |
|---|---|---|---|---|---|
| %d | %d (datetime) | %s | %varchar(255) | %varchar(255) | %bool |
| 1 | 24-12-19 | Brandelet | 1;2;3 | 1;2;3 | 1 |
| 2 | 65-68-98 | 2;3 | 1;500 | 0 |
| Matricule | Nom | Prénom | ELO | Approved | Banned |
|---|---|---|---|---|---|
| %int | %s | %s | %int | %bool (0 1) | %bool (0 1) |
| 1 | Duco | Ludo | 123456 | 1 | 0 |
| Matricule | SubmitID | ELOHistory |
|---|---|---|
| %int | %int | %int |
| 1 | 2 | 21345 |
| 2 | 2 | 21300 |
| 1 | 1 | 21355 |
| 2 | 1 | 45 |
| 3 | 1 | 21104 |
- Situation 1
- But : Afficher la liste des joueurs :
- Process :
- Get all entry from table PlayerTable
- Nombre de tables utilisées : 1
- Situation 2
- But : Afficher l’historique du joueurs fjc002
- Process :
- Get ELO and ID for fjc002 from tables HistoryTable
- For each ID dont Checked==True, get all from table SubmitTable
- Nombre de tables utilisées : 2
- Situation 3
- But : Soumission des matchs après une semaine de vacance prise par le staff
- Process :
- Get all entry from table SubmitTable dont Checked==False et print les infos pour un check (automatique ou non, à toi de voir)
- For each joueur in explode(“;”,/Joueurs/), get ELO from table PlayerTable and calculate new_elo
- modification de ELO dans PlayerTable et add row in HistoryTable avec ID (auto increment) et Joueurs
- Nombre de tables utilisées : 3
- Situation 4
- But : Afficher l’ensemble des matchs joués
- Process :
- Get all entry from table SubmitTable dont Checked==True et print les infos
- Nombre de tables utilisées : 1
Ça me semble assez bien otpimisé. Ça demande par contre d’avoir une database SQL.
<SAM/>
CREATE TABLE Submit ( ID int NOT NULL AUTO_INCREMENT, Date date NOT NULL, Joueurs varchar(255) NOT NULL, Scores varchar(255) NOT NULL, Dispositif varchar(255), Checked bit DEFAULT 0 NOT NULL, PRIMARY KEY (ID));
CREATE TABLE Joueurs ( Matricule int NOT NULL AUTO_INCREMENT, Nom varchar(255) NOT NULL, Prenom varchar(255) NOT NULL, ELO int DEFAULT 1000 NOT NULL, Banned bit DEFAULT 0 NOT NULL, Approved bit DEFAULT 0 NOT NULL, PRIMARY KEY (Matricule));
CREATE TABLE History ( Matricule int NOT NULL, SubmitID int NOT NULL, ELOHistory int NOT NULL, FOREIGN KEY (Matricule) REFERENCES Joueurs(Matricule), PRIMARY KEY (Matricule,SubmitID), FOREIGN KEY (SubmitID) REFERENCES Submit(ID));
Pour plus de réactivité et éviter de reload la page quand on ajoute un nombre de joueur
p1W = 1/(1+10^(elo2 - elo1)/400) p2W = 1/(1+10^(elo1 - elo2)/400)
i contre j -> i gagne new_elo i += 32(1-PiW) new_elo j += 32(0-PiW)
GAGNANT gagne au MAX(perdants) PERDANTS perd au MIN(Gens au dessus du classement)