Skip to content

fizzmizer/ielostone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ielostone (Site officiel de la FJC (Fédération du Jeu du Caillou)

Après un match

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)

Sur le site

publier les archives, le classement complet, les stats de chaque joueur : totale transparence

Base de données MYSQL :

Trois tables :

  • 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.

Formes des Tables

Submit

IDDateDispositif (optionnel)Joueurs (matricule)ScoresChecked
%d%d (datetime)%s%varchar(255)%varchar(255)%bool
124-12-19Brandelet1;2;31;2;31
265-68-982;31;5000

Player

MatriculeNomPrénomELOApprovedBanned
%int%s%s%int%bool (0 1)%bool (0 1)
1DucoLudo12345610

History

MatriculeSubmitIDELOHistory
%int%int%int
1221345
2221300
1121355
2145
3121104

Utilisations typiques de la base de données avec ma proposition :

  1. Situation 1
    • But : Afficher la liste des joueurs :
    • Process :
      • Get all entry from table PlayerTable
    • Nombre de tables utilisées : 1
  2. 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
  3. 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
  4. 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/>

Petit mémo pour créer les tables SQL de ielostone

Submit

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));

Joueurs

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));

History (Associative table)

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));

TODOLIST :

Page joueurs:

Voir le graphe de l’elo

Page de l’historique des matchs:

Page général regroupant l’ensemble des matchs

Submit_page :

Version javascript

AJAX search pour les joueurs

Pour plus de réactivité et éviter de reload la page quand on ajoute un nombre de joueur

Ajouter un peu de css et de forme à tout ça

Calcul d’elo (mémo)

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)

About

Site officiel de la FJC (Fédération du Jeu du Caillou)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors