Ajout de la partie «API Client-Serveur»

This commit is contained in:
Georges Dupéron 2011-05-29 23:41:32 +02:00
parent 9d1a2775e7
commit 1569e1a3b4

View File

@ -2,6 +2,7 @@
% TODO : partie "triche dans le jeu et pourrir la base"
% TODO : partie API client/serveur (réutilisable), décrire l'API
% TODO : Faut-il le diagramme UML de la première version ?
\widowpenalty=9999
\clubpenalty=9999
@ -14,7 +15,8 @@
\usepackage{um2/um2}
\usepackage{verbatim}
\usepackage{graphicx}
\usepackage{alltt}
\usepackage{enumitem}
\setlength{\parindent}{0pt}
\setlength{\parskip}{2ex}
@ -43,7 +45,6 @@ Reconception du jeu Pticlic sous \android{}}
\setcounter{page}{1}
\pagestyle{plain}
\section{Introduction}
PtiClic\footnote{http://pticlic.org} est un jeu qui a été conçu et développé par Matthieu Lafourcade et Virginie Zampa. Le jeu a été créé afin de faire des études sur le vocabulaire et la sémantique sur des sujets de divers horizons dans un contexte ludique et motivant. Un mot central apparait, un nuage de mots entoure le mot central et le joueur clique et dépose des mots du nuage dans des catégories proposé sous forme d'énoncés.
@ -810,8 +811,8 @@ remarques, critiques, encouragement des utilisateurs un formulaire de contact de
sera accessible sans inscriptions ce qui permetra d'envoyer un message par exemple si il y a un problèem et qu'une
personne n'arrive pas à s'incrire.
\subsubsection{La création de partie}
Un algorithme automatique de création de partie permet de créer un grand nombre de partie très simplement. Cependant ce moyen
\subsubsection{La création de parties}
Un algorithme automatique de création de parties permet de créer un grand nombre de partie très simplement. Cependant ce moyen
de génération de partie est assez limité et donne régulièrement des résultat trop peu satisfaisant voire même incohérents.
Pour palier à ce problème, un solution serai de mettre en place un service permettant aux joueurs de créer eux-même des parties. Ce qu i
aurait pour effet d'obtenir des parites bien plus intéressentes avec de l'humour etc. Une page du site Internet sera donc consacrée
@ -828,7 +829,7 @@ En effet lorsqu'un utilisateur saisie un mot il est important pour lui de savoir
il ne sais pas forcément combien de mots va composer sa partie. Il devra par conséquent être en mesure d'augmenter au besoin le nombre de mots
composants la partie.
\subsubsection{jouez en ligne !}
\subsubsection{Jouez en ligne !}
La seconde évolution majeure qui est liée à une nouvelle version de l'interface de jeu est qu'il est possible de jouer directement depuis
le site Internet sans forcéement disposer de téléphone sous \android{}. Cette option permettra de toucher un public bien plus large tout en
ne pénalisant pas ceux qui disposent d'un smartphone \android{}
@ -903,6 +904,76 @@ Nous avons aussi employé une forme limitée de programmation réactive pour le
Enfin, nous avons utilisé les capactités de javaScript lui-même, qui est un langage objet basé sur les prototypes (et non les classes), pour
étendre le langage là où cela s'est avéré nécessaire.
\subsubsection{API Client-serveur}
Le client et le serveur utilisent tout deux une API qui permet de facilement remplacer un des deux composants. Tous les appels au serveur se font en HTTP GET et peuvent avoir les deux paramètres \verb!user! et \verb!password!. De plus, elles peuvent renvoyer une erreur au format suivant~:
\begin{alltt}
\{"error":\textit{Code d'erreur}, "msg":\textit{Message d'erreur}, "isError":true\}
\end{alltt}
Voici les principaux messages que supporte le serveur~:
\begin{itemize}
\item Récupérer une partie jouable~:
\verb!server.php?action=0!
{
\small
\begin{alltt}
\{
\quad"author":"\textit{Créateur de la partie}",
\quad"gid":\textit{Numéro de la partie},
\quad"pgid":\textit{Numéro de la partie jouable},
\quad"relations":[
\quad\quad\{"id":7,"name":"Un contraire de %mc est %mn"\},
\quad\quad
\quad],
\quad"center":\{"id":\textit{eid mot central},"name":"\textit{Mot central}"\},
\quad"cloud":[
\quad\quad\{"id":\textit{eid mot nuage},"name":"\textit{Mot nuage}"\},
\quad\quad
\quad]
\}
\end{alltt}
}
\item Répondre à une partie~:
\verb!server.php?action=1&gid=!\textit{\texttt{numéro de partie}}\verb!&pgid=!\textit{\texttt{numéro de partie}}
Cette requête doit aussi prendre un couple \textit{\texttt{numéro du mot du nuage}}\verb!=!\textit{\texttt{numéro de la relation}} pour
chaque réponse. Elle renvoie la structure suivante~:
{
\small
\begin{alltt}
\{
\quad"scoreTotal":\textit{Score pour la partie},
\quad"alreadyPlayed":\textit{true si la partie a déjà été jouée, false sinon},
\quad"author":\textit{Créateur de la partie}",
\quad"minScore":\textit{Plus petit score pour un mot},
\quad"maxScore":\textit{Plus grand score pour un mot},
\quad"newGame":\textit{Nouvelle partie, même format que action=0},
\quad"scores":[
\quad\quad\{"name":"\textit{Mot nuage}", "score":\textit{Score pour le mot}\}
\quad]
\}
\end{alltt}
}
\item D'autres actions de moindre intérêt sont disponibles, et permettent de~:
\begin{description}
\item[\verb!action=2!] Déclencher la création automatique de parties;
\item[\verb!action=3!] Vérifier si un couple utilisateur/mot de passe est valide;
\item[\verb!action=4!] Vérifier si un mot existe dans la base de données;
% N°5 :
\item[\verb!action=5!] Récupérer la liste des relations disponibles («fait partie de», «synonyme»…);
\item[\verb!action=6!] Stocker une partie créée manuellement;
\item[\verb!action=7!] Récupérer les préférences de l'utilisateur;
\item[\verb!action=8!] Modifier les préférences de l'utilisateur;
\item[\verb!action=9!] Terminer la session et déconnecter l'utilisateur;
% n°10 :
\item[\verb!action=10!] Indiquer si l'utilisateur aime ou non la partie à laquelle il a joué.
\end{description}
\end{itemize}
\section{Réalisation}
\subsection{Cahier des charges}