diff --git a/code/serveur/php/createGame.php b/code/serveur/php/createGame.php index 2d0982d..fdb2ac0 100644 --- a/code/serveur/php/createGame.php +++ b/code/serveur/php/createGame.php @@ -6,7 +6,8 @@ session_start(); if(!isset($_SESSION['userId'])) header("location:login.php?return=createGame&showmsg=oth_login_createGame_nauth"); - + +$cgCount = getNbGameCreationRemained($_SESSION['userId']); ?> @@ -15,151 +16,161 @@ if(!isset($_SESSION['userId'])) PtiClic - Création de partie - - - + + #relations { + margin-bottom : 20px; + margin-top : 10px; + } + + #relations label { + margin-left : 40px; + border-bottom : 1px solid grey; + border-left : 1px solid grey; + -moz-border-radius : 100%; + padding-left : 10px; + padding-right : 10px; + } + + #button { + margin-top : 30px; + margin-left : 50px; + margin-bottom : 40px; + } + + #button input { + margin-left : 10px; + margin-right : 40px; + padding : 4px; + padding-left : 8px; + padding-right : 8px; + font-weight : bold; + } + + -
-

Création de parties

-

Cette page vous permet de créer des parties personalisées en indiquant les mots qui seront affiché pour un mot central.

-

- - - -
- - - -
-
- - - - -
-
- + + +
- - - -
- -
-
+
+ + Vous ne disposez pas assez de points pour pouvoir créer des partes.'; + }?> diff --git a/code/serveur/php/jeu.html b/code/serveur/php/jeu.html index 02ff05b..e4c8c75 100644 --- a/code/serveur/php/jeu.html +++ b/code/serveur/php/jeu.html @@ -127,11 +127,11 @@
-

Score total :

-
-

- J'♥ cette partie - J'♥ pas cette partie +

Score total :

+
+

+ J'♥ cette partie + J'♥ pas cette partie

J'ai vu ! diff --git a/code/serveur/php/ressources/backend.inc b/code/serveur/php/ressources/backend.inc index bc42557..05382cc 100644 --- a/code/serveur/php/ressources/backend.inc +++ b/code/serveur/php/ressources/backend.inc @@ -34,6 +34,7 @@ require_once("ressources/db.inc"); * getJAimePgid($user, $pgid); * setJAimePgid($user, $pgid, $value); * addGameCreationBonus($user, $nb); +* function deleteOneGameCreation($user); * getNbGameCreationRemained($user); */ @@ -300,6 +301,7 @@ function decodeAndInsertGame($user,$game) { echo JSON_encode(false); } else { insertCreatedGame($centerEid,$cloud,$r1,$r2,10,$user); + deleteOneGameCreation($user); echo JSON_encode(true); } } @@ -752,15 +754,20 @@ function setJAimePgid($user, $pgid, $value) { function addGameCreationBonus($user, $nb) { if($nb > 0) { - getDB()->exec('UPDATE user SET cgCount = cgCount + '.$ng.' WHERE user='.$user); + getDB()->exec('UPDATE user SET cgCount = cgCount + '.$ng.' WHERE login=\''.$user.'\''); return true; } return false; } -function getNbGameCreationRemained() { - return getDB()->querySingle('SELECT cgCount FROM user WHERE user='.$user); +function deleteOneGameCreation($user) { + if(getNbGameCreationRemained($user) > 0) + getDB()->exec('UPDATE user SET cgCount=cgCount-1 WHERE login=\''.$user.'\''); +} + +function getNbGameCreationRemained($user) { + return getDB()->querySingle('SELECT cgCount FROM user WHERE login=\''.$user.'\''); } ?> diff --git a/code/serveur/php/signup.php b/code/serveur/php/signup.php index af6d3fb..ceb2cf9 100644 --- a/code/serveur/php/signup.php +++ b/code/serveur/php/signup.php @@ -79,7 +79,7 @@ if(isset($_POST['signuppswd2'])){ if(count($msg) == 0 && $newpage == false) { - $ok = ($db->query("INSERT INTO user(mail, login, hash_passwd, score, ugroup, sgCount) VALUES ('" . SQLite3::escapeString($signupemail) + $ok = ($db->query("INSERT INTO user(mail, login, hash_passwd, score, ugroup, cgCount) VALUES ('" . SQLite3::escapeString($signupemail) . "', '" . SQLite3::escapeString($signupid) . "', '" . SQLite3::escapeString(md5($signuppswd1)) . "', 0, 1, 0);")); diff --git a/presentation/presentation.tex b/presentation/presentation.tex index e422804..434c0d4 100644 --- a/presentation/presentation.tex +++ b/presentation/presentation.tex @@ -15,14 +15,14 @@ \title{FMIN200 \\ TER~: Reconception du jeu PtiClic sous \android{}} \author{DUPÉRON Georges \and\\ CHARRON John \and\\ BRUN Bertrand \and\\ BONAVERO Yoann} -\institute{Université Montpellier II, Département informatique} +\institute{Université Montpellier II, Département informatique \\ Master 1 IFPRU \\ Sous la direction de Monsieur Mathieu LAFOURCADE} \date{Jeudi, 26 mai 2011} \defbeamertemplate*{footline}{shadow theme} {% \leavevmode% \hbox{\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm plus1fil,rightskip=.3cm]{author in head/foot}% - \usebeamerfont{author in head/foot}\insertframenumber\,/\,\inserttotalframenumber\hfill\url{http://pticlic.fr/} + \usebeamerfont{author in head/foot}\insertframenumber\,/\,\inserttotalframenumber\hfill\url{http://www.pticlic.fr/} \end{beamercolorbox}% \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}% \usebeamerfont{title in head/foot}\insertshorttitle% @@ -171,39 +171,10 @@ Types de noeuds \begin{itemize} \item bruits = relations plus fortes que la réalité \item silence = relations non existantes ou trop faible par rapport à la réalité - \item bruits + silences = couverture de relations sémantiques hétérogènes + \item bruits et/ou silences = couverture de relations sémantiques hétérogènes \end{itemize} \end{frame} -\begin{frame} -\begin{figure} - \begin{center} - \includegraphics[width=0.75\textwidth]{img/jdm.jpeg} - \end{center} -\end{figure} -\end{frame} - -\begin{frame} -\begin{center} - \begin{tabular}{ | l | l | l | l | p{5cm} |} - \hline -\footnotesize{Relation} & \footnotesize{Mot central} & \footnotesize{Mots nuage} & \footnotesize{Remarques} \\ \hline -\footnotesize{-1 'mn' n'est pas lié à 'mc'} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{} \\ \hline -\footnotesize{0 'mc' est en rapport avec 'mn'} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{} \\ \hline -\footnotesize{5 'mc' est un synonyme de 'mn'} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{\shortstack{même POS}} \\ \hline -\footnotesize{6 'mc' est une sorte de 'mn'} & \footnotesize{n} & \footnotesize{n} & \footnotesize{} \\ \hline -\footnotesize{7 Un contraire de 'mc' est 'mn'} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{\shortstack{même POS}} \\ \hline -\footnotesize{8 Un spécifique de 'mc' est 'mn'} & \footnotesize{n} & \footnotesize{n} & \footnotesize{} \\ \hline -\footnotesize{9 'mn' est une partie de 'mc'} & \footnotesize{n} & \footnotesize{n} & \footnotesize{} \\ \hline -\footnotesize{10 'mc' fait partie de 'mn'} & \footnotesize{n} & \footnotesize{n} & \footnotesize{} \\ \hline -\footnotesize{13 'mn' pourrait 'mc'} & \footnotesize{v} & \footnotesize{n} & \footnotesize{} \\ \hline -\footnotesize{15 Le lieu pour 'mc' est 'mn'} & \footnotesize{n v} & \footnotesize{\shortstack{n}} & \footnotesize{} \\ \hline -\footnotesize{16 Instrument pour 'mc' est 'mn'} & \footnotesize{v} & \footnotesize{n} & \footnotesize{} \\ \hline -\footnotesize{17 'mn' Caractéristique de 'mc'} & \footnotesize{n} & \footnotesize{adj} & \footnotesize{} \\ \hline - \end{tabular} -\end{center} -\end{frame} - \begin{frame} \begin{figure} \pgfdeclarelayer{background} @@ -214,11 +185,11 @@ Types de noeuds earlymidway/.style = {pos=0.4}, latemidway/.style = {pos=0.6} ] - \node (n0) {musique}; - \node[above left = 2cm of n0] (n1) {trompette}; - \node[above right = 2cm of n0] (n2) {instrument}; - \node[below left = 2cm of n0] (n3) {champignon}; - \node[below right = 2cm of n0] (n4) {instrument de musique}; + \node (n0) {mot4}; + \node[above left = 2cm of n0] (n1) {mot1}; + \node[above right = 2cm of n0] (n2) {mot3}; + \node[below left = 2cm of n0] (n3) {mot2}; + \node[below right = 2cm of n0] (n4) {mot5}; \foreach \direction/\nfrom/\nto/\angle/\pos/\anchor/\text in { ->/n0/n2/15/near end/east/idée associée 450, @@ -246,12 +217,32 @@ Types de noeuds \end{frame} \begin{frame} - Pas de conflit de relations et la bonne catégorie grammaticale~: conditions nécessaires mais pas suffisantes +\begin{center} + \begin{tabular}{ | l | l | l | l | p{5cm} |} + \hline +\footnotesize{Relation} & \footnotesize{Mot central} & \footnotesize{Mots nuage} & \footnotesize{Remarques} \\ \hline +\footnotesize{-1 'mn' n'est pas lié à 'mc'} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{} \\ \hline +\footnotesize{0 'mc' est en rapport avec 'mn'} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{} \\ \hline +\footnotesize{5 'mc' est un synonyme de 'mn'} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{\shortstack{même POS}} \\ \hline +\footnotesize{6 'mc' est une sorte de 'mn'} & \footnotesize{n} & \footnotesize{n} & \footnotesize{} \\ \hline +\footnotesize{7 Un contraire de 'mc' est 'mn'} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{\shortstack{adj adv n v}} & \footnotesize{\shortstack{même POS}} \\ \hline +\footnotesize{8 Un spécifique de 'mc' est 'mn'} & \footnotesize{n} & \footnotesize{n} & \footnotesize{} \\ \hline +\footnotesize{9 'mn' est une partie de 'mc'} & \footnotesize{n} & \footnotesize{n} & \footnotesize{} \\ \hline +\footnotesize{10 'mc' fait partie de 'mn'} & \footnotesize{n} & \footnotesize{n} & \footnotesize{} \\ \hline +\footnotesize{13 'mn' pourrait 'mc'} & \footnotesize{v} & \footnotesize{n} & \footnotesize{} \\ \hline +\footnotesize{15 Le lieu pour 'mc' est 'mn'} & \footnotesize{n v} & \footnotesize{\shortstack{n}} & \footnotesize{} \\ \hline +\footnotesize{16 Instrument pour 'mc' est 'mn'} & \footnotesize{v} & \footnotesize{n} & \footnotesize{} \\ \hline +\footnotesize{17 Un caractéristique de 'mc' est 'mn'} & \footnotesize{n} & \footnotesize{adj} & \footnotesize{} \\ \hline + \end{tabular} +\end{center} +\end{frame} + +\begin{frame} + Pas de conflit de relations + bonne catégorie grammaticale = conditions nécessaires mais pas suffisantes \begin{itemize} - \item 'mn' est une partie de 'mc'~: les mots doivent être des noms, mais doivent aussi être des choses physiques. Le mot "honnêteté' ne marchera pas - \item 'mn' pourrait 'mc' (Qui/Quoi pourrait 'mc')~: les mots doivent être des noms et un verbe respectivement, mais un verbe d'état ne conviendrait pas - \item le lieu de 'mc' est 'mn'~: les mots doivent être un nom ou verbe puis un nom, mais le nom doit pouvoir signifier un lieu, un endroit -Il existe un dispositif dans la base de données prévu pour nous donner des informations métalinguistiques afin de faire ses distinctions, mais souvent la base n'est pas suffisemment alimentées pour pouvoir exploiter ces attributs sémantiques. + \item 'mn' est une partie de 'mc'~ : noms, mais objets physiques aussi. + \item 'mn' pourrait 'mc' (Qui/Quoi pourrait 'mc')~: noms et verbe respectivement, mais verbe d'état ne fonctionne pas + \item le lieu de 'mc' est 'mn'~: nom ou verbe puis nom, etc. \end{itemize} \end{frame} @@ -260,40 +251,87 @@ Il existe un dispositif dans la base de données prévu pour nous donner des inf Algorithme de base pour introduire des mots sans aucune relation sémantique \begin{enumerate} \item On génère le nuage à l'aide d'une méthode ou algorithme auxiliaire (LSA ou autre) à partir d'un mot central choisi au hasard - \item On choisit la seule relation sémantique "idée associée" afin de valider les mots générés par l'étape précédente (ainsi on établit des relations sortantes "idée associée" à partir d'un mot) - \item Algorithme suivant sera utilisé pour affiner les informations concernant le mot central en question + \item On choisit la seule relation sémantique "idée associée" afin de valider les mots générés par l'étape précédente + \item Algorithme suivant est utilisé pour affiner les informations concernant le mot central en question \end{enumerate} \end{frame} \begin{frame} -LSA ou autres méthodes d'établir des liens sémantiques -\begin{figure} - \begin{minipage}{\textwidth} -\centering - \includegraphics[width=0.75\textwidth]{img/lsa.jpeg} - \end{minipage} -\end{figure} + \begin{figure} + \pgfdeclarelayer{background} + \pgfdeclarelayer{foreground} + \pgfsetlayers{background,main,foreground} + \begin{tikzpicture}[ + txt/.style = {fill=white,font=\footnotesize,scale=0.75, inner sep=1pt}, + earlymidway/.style = {pos=0.4}, + latemidway/.style = {pos=0.6} + ] + \node (n0) {mot4}; + \node[above left = 2cm of n0] (n1) {mot1}; + \node[above right = 2cm of n0] (n2) {mot3}; + \node[below left = 2cm of n0] (n3) {mot2}; + \node[below right = 2cm of n0] (n4) {mot5}; + + \foreach \direction/\nfrom/\nto/\angle/\pos/\anchor/\text in { + -/n0/n1/15/near end/east/0.28, + % + -/n0/n2/-20/midway/center/0.48, + % + -/n0/n3/-15/near end/east/0.12, + % + -/n0/n4/-15/very near end/east/0.4, + % + -/n1/n2/-20/midway/center/0.94, + % + -/n1/n3/-15/near end/east/0.75, + % + -/n1/n4/-15/very near end/east/0.42, + % + -/n2/n3/-15/near end/east/0.04, + % + -/n2/n4/-15/very near end/east/0.39, + % + -/n3/n4/-20/midway/center/0.88 +}{ + \draw[\direction] (\nfrom) to[bend left=\angle] (\nto); + \begin{pgfonlayer}{foreground} + \path[\direction] (\nfrom) to[bend left=\angle] node[\pos, anchor=\anchor, txt] {\text} (\nto); + \end{pgfonlayer} + } + \end{tikzpicture} + \end{figure} \end{frame} \begin{frame} Algorithme pour affiner des relations de types "idée associée" \begin{enumerate} - \item On génère le nuage à partir de la relation sémantique le plus général, quasiment toutes les autres relations sémantiques étant un sous-ensemble de cette relation + \item On génère le nuage à partir de la relation sémantique le plus général, "idée associée" \item On choisit des relations sémantiques plus spécifiques sans conflits (tableau "relations" précédent) \end{enumerate} \end{frame} \begin{frame} - Algorithme pour renforcer ajouter et renforcer des relations sémantiques spécifiques, quelques exemples + Algorithmes de renforcement de relations \begin{itemize} -\item Pour la relation de synonymie, on génère des mots nuage "synonyme de synonyme" ou bien "antonyme d'antonyme" du mot central -\item Pour la relation d'antonymie, on génère des mots nuage "antonyme de synonyme" ou bien "synonyme d'antonyme" du mot central -\item Pour la relation "spécifique de" on bascule une fois entre "est une sorte de" et "est un spécifique du" mot central une fois (et inversement dans le cas inverse, on peut aussi appliquer le même principe aux relations contenu/contenant, etc. +\item Synonymie~: synonyme de synonyme" ou "antonyme d'antonyme" du mot central +\item Antonymie~: "antonyme de synonyme" ou "synonyme d'antonyme" du mot central +\item Spécifique~: "spécifique d'un générique d'un spécifique" du mot central +\item etc. \end{itemize} -Inconvénient~: on n'introduit pas de nouvelles relations sémantiques spécifiques et le renforcement est possible à l'aide de l'algorithme du transparent précédent \end{frame} + +\begin{frame} + Expériences en TALN~: interactions homme-machine +\begin{itemize} +\item On apprend de la machine +\item La machine "apprend" de nous~: modifications d'algorithmes, de stratégies et d'approches par rapport aux résultats +\end{itemize} +\end{frame} + + + \section{Generation de partie} \begin{frame} @@ -410,7 +448,7 @@ Inconvénient~: on n'introduit pas de nouvelles relations sémantiques spécifiq \frametitle{Prototype 2} \begin{block}{Schéma générale de l'enchainement des pages~:} \centering - \texttt{\textcolor{gray}{http://pticlic.fr/jeu.html}\#\textcolor{red}{game}/\textcolor{blue}{1306104746953}/\textcolor{blue}{5,0,5,-1}} + \texttt{\textcolor{gray}{http://www.pticlic.fr/jeu.html}\#\textcolor{red}{game}/\textcolor{blue}{1306104746953}/\textcolor{blue}{5,0,5,-1}} \vskip 1em% \begin{tikzpicture}[ state/.style = {circle,draw,minimum size=1.5cm},