Merge branch 'master' of https://github.com/jsmaniac/2011-m1s2-ter
This commit is contained in:
commit
1d3ac242c2
|
@ -7,6 +7,54 @@ $state = 0;
|
|||
$err = false;
|
||||
$msg = "";
|
||||
|
||||
function getWords($nbwords)
|
||||
{
|
||||
global $msg;
|
||||
global $err;
|
||||
$words = array();
|
||||
|
||||
for($i = 0; $i < $nbwords; $i++)
|
||||
if(!isset($_POST['word'.$i]) || empty($_POST['word'.$i])) {
|
||||
$err = true;
|
||||
$msg = $strings['err_creategame_fill_all'];
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
$words[$i] = $_POST['word'.$i];
|
||||
|
||||
return $words;
|
||||
}
|
||||
|
||||
function getWordsAndResponses($nbwords)
|
||||
{
|
||||
global $err;
|
||||
global $msg;
|
||||
$words = array();
|
||||
$respwords = array();
|
||||
|
||||
$words = getWords($nbwords);
|
||||
|
||||
if($words == -1)
|
||||
return -1;
|
||||
|
||||
foreach($words as $key=>$w) {
|
||||
if(isset($_POST['rd'.$key])) {
|
||||
$respwords[$key] = array();
|
||||
$respwords[$key][0] = $words[$key];
|
||||
$respwords[$key][1] = $_POST['rd'.$key];
|
||||
}
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
return $respwords;
|
||||
}
|
||||
|
||||
function checked($name, $value) {
|
||||
if(isset($_POST[$name]) && $_POST[$name] == $value)
|
||||
return 'checked';
|
||||
}
|
||||
|
||||
if(isset($_POST['nbcloudwords'])) {
|
||||
$nbwords = $_POST['nbcloudwords'];
|
||||
|
||||
|
@ -27,14 +75,7 @@ if(isset($_POST['nbcloudwords'])) {
|
|||
$rels[2] = "Est en rapport avec";
|
||||
$rels[3] = "N'a aucun rapport avec";
|
||||
|
||||
for($i = 0; $i < $nbwords; $i++)
|
||||
if(!isset($_POST['word'.$i]) || empty($_POST['word'.$i])) {
|
||||
$err = true;
|
||||
$msg = $strings['err_creategame_fill_all'];
|
||||
break;
|
||||
}
|
||||
else
|
||||
$words[$i] = $_POST['word'.$i];
|
||||
$words = getWords($nbwords);
|
||||
|
||||
if($err != true)
|
||||
$state = 2;
|
||||
|
@ -44,6 +85,15 @@ if(isset($_POST['nbcloudwords'])) {
|
|||
$msg = $strings['err_creategame_eq_relations'];
|
||||
}
|
||||
}
|
||||
|
||||
if($state == 2) {
|
||||
$respwords = getWordsAndResponses($nbwords);
|
||||
|
||||
if($respwords != -1) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
$err = true;
|
||||
$msg = $strings['err_creategame_fill_all'];
|
||||
|
@ -93,7 +143,7 @@ else
|
|||
echo '<tr><td><label for="relation1">Relation 1 : </label></td>';
|
||||
echo '<td class="inputcell"><select name="relation1">';
|
||||
foreach($relations as $key=>$r)
|
||||
echo '<option value="'.$ey.'">'.$r[1].'</option>';
|
||||
echo '<option value="'.$key.'">'.$r[1].'</option>';
|
||||
echo '</select></td>';
|
||||
echo '<td><label for="relation2">Relation 2 : </label></td>';
|
||||
echo '<td class="inputcell"><select name="relation2">';
|
||||
|
@ -122,20 +172,25 @@ else
|
|||
echo '</tr><tr><td colspan="2"></td><td colspan="2" class="td2"><input type="submit" value="Enregistrer la partie" /></td></tr>';
|
||||
}
|
||||
else {
|
||||
echo '<table class="wordsform">';
|
||||
echo 'Mot central : ';
|
||||
echo $centralword;
|
||||
echo '<tr>';
|
||||
echo '<input type="hidden" name="centralword" value="'.$centralword.'" />';
|
||||
echo '<input type="hidden" name="nbcloudwords" value="'.$nbwords.'" />';
|
||||
echo '<input type="hidden" name="relation1" value="'.$_POST['relation1'].'" />';
|
||||
echo '<input type="hidden" name="relation2" value="'.$_POST['relation2'].'" />';
|
||||
echo '<table class="wordsform">';
|
||||
echo '<tr>';
|
||||
|
||||
foreach($words as $key=>$w) {
|
||||
echo '<td>'.$w.'</td><td class="inputcell">';
|
||||
echo '<input type="radio" name="'.$key.'" id="'.$key.'_r1" value="0">';
|
||||
echo '<input type="hidden" name="word'.$key.'" value="'.$w.'" />';
|
||||
echo '<input type="radio" name="rd'.$key.'" id="'.$key.'_r1" value="0" '.checked("rd".$key,0).'>';
|
||||
echo '<label for="'.$key.'_r1">'.$rels[0].'</label><br />';
|
||||
echo '<input type="radio" name="'.$key.'" id="'.$key.'_r2" value="1">';
|
||||
echo '<input type="radio" name="rd'.$key.'" id="'.$key.'_r2" value="1" '.checked("rd".$key,1).'>';
|
||||
echo '<label for="'.$key.'_r2">'.$rels[1].'</label><br />';
|
||||
echo '<input type="radio" name="'.$key.'" id="'.$key.'_r3" value="2">';
|
||||
echo '<input type="radio" name="rd'.$key.'" id="'.$key.'_r3" value="2" '.checked("rd".$key,2).'>';
|
||||
echo '<label for="'.$key.'_r3">'.$rels[2].'</label><br />';
|
||||
echo '<input type="radio" name="'.$key.'" id="'.$key.'_r4" value="3">';
|
||||
echo '<input type="radio" name="rd'.$key.'" id="'.$key.'_r4" value="3" '.checked("rd".$key,3).'>';
|
||||
echo '<label for="'.$key.'_r4">'.$rels[3].'</label></td>';
|
||||
|
||||
if($key%2 != 0)
|
||||
|
@ -143,10 +198,10 @@ else
|
|||
}
|
||||
|
||||
if(count($words)%2 != 0)
|
||||
echo '<td></td><td></td>';
|
||||
echo '<td colspan="2"></td>';
|
||||
|
||||
echo '</tr>';
|
||||
echo '<tr><td><input type="submit" value="Enregistrer" /></td></tr>';
|
||||
echo '<tr><td colspan="4"><input type="submit" value="Enregistrer" /></td></tr>';
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
|
|
|
@ -2,6 +2,31 @@
|
|||
|
||||
require_once("db.php");
|
||||
|
||||
/* Les prototypes des fonctions :
|
||||
* ===============================>
|
||||
* checkLogin($user, $passwd);
|
||||
* randomCenterNode();
|
||||
* randomCloudNode();
|
||||
* cgBuildResultSets($cloudSize, $centerEid, $r1, $r2);
|
||||
* cgChooseRelations();
|
||||
* cgBuildCloud($centerEid, $cloudSize, $sources, $sumWeights);
|
||||
* cgInsert($centerEid, $cloud, $r1, $r2, $totalDifficulty);
|
||||
* randomGameCore();
|
||||
* randomGame();
|
||||
* formatWord($word);
|
||||
* game2json($user, $gameId);
|
||||
* game2array($user, $gameId);
|
||||
* createGame($nbParties, $mode);
|
||||
* createGameCore($cloudSize);
|
||||
* getGame($user, $nbGames, $mode);
|
||||
* computeScore($probas, $difficulty, $answer, $userReputation);
|
||||
* computeUserReputation($score);
|
||||
* normalizeProbas($row);
|
||||
* setGame($user, $pgid, $gid, $answers);
|
||||
* get_game_relations();
|
||||
*/
|
||||
|
||||
|
||||
/** Vérifie la validité du couple nom d'utilisateur / mot de passe.
|
||||
* @param user : Le nom d'utilisateur.
|
||||
* @param passwd : Le mot de passe.
|
||||
|
@ -559,7 +584,10 @@ function get_game_relations()
|
|||
$db = getDB();
|
||||
|
||||
// TODO modifier la requête pour ne sélectionner que les relations pertinentes.
|
||||
$res = $db->query("SELECT num,name FROM type_relation");
|
||||
$res = $db->query("SELECT num,extended_name
|
||||
FROM type_relation
|
||||
WHERE num=5 OR num=7 OR num=9
|
||||
OR num=10 OR num=13 OR num=14 OR num=22");
|
||||
|
||||
while($r = $res->fetchArray())
|
||||
$relations[] = $r;
|
||||
|
|
|
@ -1,165 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* The purpose of this class is to facilitate form writing in php.
|
||||
* It does this by:
|
||||
* - facilitating value retrieval with reduced complex $_POST['var'] or
|
||||
* $_GET['var'] syntax
|
||||
* - encapsulates all primary form validation checking within a single class
|
||||
*
|
||||
*/
|
||||
class FormValidator {
|
||||
|
||||
/** array of error codes */
|
||||
private $arErrors;
|
||||
/** 'post' or 'get' */
|
||||
private $method;
|
||||
|
||||
public function FormValidator($method) {
|
||||
/** resets array of error codes */
|
||||
$this->arErrors = array();
|
||||
/** 'post' or 'get' */
|
||||
$this->method = $method;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param <type> $name
|
||||
* @return <type>
|
||||
*/
|
||||
public function getSimpleValue($name) {
|
||||
switch ($this->method) {
|
||||
case "post":
|
||||
if (!is_array($_POST["$name"])) {
|
||||
return $_POST["$name"];
|
||||
}
|
||||
break;
|
||||
case "get":
|
||||
if (!is_array($_GET["$name"]))
|
||||
return $_GET["$name"];
|
||||
break;
|
||||
default:
|
||||
echo "ERROR: getSimpleValue() error";
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
public function getCompoundValue($name) {
|
||||
switch ($this->method) {
|
||||
case "post":
|
||||
if (is_array($_POST["$name"]))
|
||||
return $_POST["$name"];
|
||||
break;
|
||||
case "get":
|
||||
if (is_array($_GET["$name"]))
|
||||
return $_GET["$name"];
|
||||
break;
|
||||
default:
|
||||
echo "ERROR: getCompoundValue() error";
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
public function isEmpty($name, $msg) {
|
||||
$value = $this->getSimpleValue($name);
|
||||
if (trim($value) == "") {
|
||||
//$msg += " (not a string) ";
|
||||
$this->arErrors[] = array("name" => $name, "value" => $value, "msg" => $msg);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* $type can be any of "boolean", "integer", "double", "string", "array"
|
||||
* "object", "resource", "NULL", "unknown type"
|
||||
* @param <type> $type
|
||||
* @param <type> $name
|
||||
* @param <type> $msg
|
||||
* @return <type>
|
||||
*/
|
||||
public function isOfType($type, $name, $msg) {
|
||||
$string = "";
|
||||
$value = $this->getSimpleValue($name);
|
||||
if ($type == gettype($value)) {
|
||||
return true;
|
||||
} else {
|
||||
$msg += "(not a(n) " + $type + ")";
|
||||
$this->arErrors[] = array("name" => $name, "value" => $value,
|
||||
"msg" => $msg);
|
||||
}
|
||||
}
|
||||
|
||||
public function isSafeAlphaString($name, $msg) {
|
||||
$value = $this->getSimpleValue($name);
|
||||
$pattern = "/^[a-zA-Z]+$/";
|
||||
if (!preg_match($pattern, $value)) {
|
||||
$this->arErrors[] = array("name" => $name, "value" => $value, "msg" => $msg);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function isSafeNumericString($name, $msg) {
|
||||
$value = $this->getSimpleValue($name);
|
||||
$pattern = "/^-*([0-9]+|[0-9]*\.[0-9]+)$/";
|
||||
if (preg_match($pattern, $value)) {
|
||||
$this->arErrors[] = array("name" => $name, "value" => $value, "msg" => $msg);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function isSafeAlphaNumeric($name, $msg) {
|
||||
$value = $this->getSimpleValue($name);
|
||||
$pattern = "/^([a-zA-Z0-9])+([\.\-_][a-zA-Z0-9]*)*/";
|
||||
// TODO: Make is so that you can only have one . or - or _ in a row
|
||||
if (!preg_match($pattern, $value)) {
|
||||
$this->arErrors[] = array("name" => $name, "value" => $value, "msg" => $msg);
|
||||
return false;
|
||||
} return true;
|
||||
}
|
||||
|
||||
|
||||
public function isWithin($name, $min, $max, $msg) {
|
||||
$value = $this->getSimpleValue($field);
|
||||
if (!is_numeric($value) || $value < $min || $value > $max) {
|
||||
$this->arErrors[] = array("name" => $name, "value" => $value, "msg" => $msg);
|
||||
return false;
|
||||
} return true;
|
||||
}
|
||||
|
||||
public function isSafeValidEmail($name, $msg) {
|
||||
$value = $this->getSimpleValue($name);
|
||||
//$pattern = "/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/";
|
||||
$pattern = "/^([a-zA-Z0-9])+([\.\-_][a-zA-Z0-9]*)*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/";
|
||||
// TODO: Make is so that you can only have one . or - or _ in a row
|
||||
if (!preg_match($pattern, $value)) {
|
||||
$this->arErrors[] = array("name" => $name, "value" => $value, "msg" => $msg);
|
||||
return false;
|
||||
} return true;
|
||||
}
|
||||
|
||||
public function isSafeValidPasssword($name, $msg){
|
||||
//TODO:...
|
||||
}
|
||||
|
||||
public function addCostumErrorMsg($msg){
|
||||
$this->arErrors[] = array("name" => "**custom**", "value" => "**costum**", "msg" => $msg);
|
||||
}
|
||||
|
||||
public function getArErrors() {
|
||||
return $this->arErrors;
|
||||
}
|
||||
|
||||
function isValidForm() {
|
||||
if (sizeof($this->arErrors) > 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getMethod() {
|
||||
return $this->method;
|
||||
}
|
||||
}
|
||||
?>
|
BIN
rapport/img/PtiClicAccueil.png
Executable file
BIN
rapport/img/PtiClicAccueil.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 88 KiB |
BIN
rapport/img/PtiClicJeu.png
Executable file
BIN
rapport/img/PtiClicJeu.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 137 KiB |
BIN
rapport/img/PtiClicJeu2.png
Executable file
BIN
rapport/img/PtiClicJeu2.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 96 KiB |
BIN
rapport/img/PtiClicResultats.png
Executable file
BIN
rapport/img/PtiClicResultats.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
|
@ -4,10 +4,14 @@
|
|||
\usepackage[T1]{fontenc}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{um2/um2}
|
||||
\usepackage{verbatim}
|
||||
\usepackage{graphicx}
|
||||
|
||||
|
||||
\setlength{\parindent}{0pt}
|
||||
\setlength{\parskip}{2ex}
|
||||
|
||||
|
||||
\title{Rapport de TER\\---\\Reconception du jeu Pticlic sous Android}
|
||||
\author{Yoann \textsc{Bonavero} \and Bertrand \textsc{Brun} \and John \textsc{Charron} \and Georges \textsc{Dupéron}}
|
||||
|
||||
|
@ -56,8 +60,181 @@ Un grand nombre de développeurs ont créés des applications pour étendre la f
|
|||
|
||||
\section{Analyse de l'existant}
|
||||
|
||||
L'application du jeu du PtiClic d'origine est une application disponible en ligne sur http://www.lirmm.fr/pticlic/pticlic.php. Nous n'avions pas accès au code source de l'application ni à des diagrammes UML. La seule partie de cette application qui nous a été fournie est le dump de la base de données.
|
||||
|
||||
L'analyse de l'existant consistait donc d'une analyse du dump de la base de données ainsi que l'application sur Internet que nous avons testé et analysé.
|
||||
|
||||
\subsection{Le déroulement du jeu}
|
||||
L'utilisateur clique sur le boutont \"Je joue !\". Un mot se dirige vers le centre de la page , c'est mot central. D'autres mots viennent entourer le mot central, ce sont les mots nuage. La police du mot central est plus grande que celle des mots nuages. Le mot central et les mots nuages sont sont de couleurs contrastées.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width=14cm]{img/PtiClicJeu.png}
|
||||
\end{center}
|
||||
|
||||
Les relations apparaît à droite des mots. Une partie peut comporter de un à quatre relations. Un carré apparaît à droite de la relation suivi de la relation sous forme de syntagme tel que \"(mot central) est en rapport avec...\", \"Quoi/Qui pourrait (mot central)~?\". S'il y a plus d'une relation, les relations apparaîssent les unes en dessous les autres, toujours à droite de l'espace mots.
|
||||
|
||||
Encore plus à droite, un bref explicatif du principe du jeu, et tout en bas, le bouton \"J'ai fini~!\",
|
||||
|
||||
Le principe du jeu est simple. Lorsque l'utilisateur estime qu'un mot nuage est lié au mot central par une des relations, il glisse et dépose le mot nuage sur le carré de la relation. Si l'utilisateur pense qu'aucune des relations convient, il laisse le mot dans le nuage tout simplement.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width=14cm]{img/PtiClicJeu2.png}
|
||||
\end{center}
|
||||
|
||||
Si le joueur se trompe, il peut double-cliquer sur le carré pour extraire le dernier mot déposé. En fait, le joueur peut double-cliquer autant de fois qu'il le veut pour extraire tous les mots ayant été mis dans la relation un par en afin de modifier ses choix. Lorsque le joueur a fait ses choix et souhaite finir sa partie, il clique sur \"J'ai fini !\", ce qui renvoie vers la page des résultats et du score. Il n'y a aucune limite de temps pour jouer ce jeu.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width=14cm]{img/PtiClicResultats.png}
|
||||
\end{center}
|
||||
|
||||
La page des scores contient aussi le corrigé de la partie. Les mots qui ont été mis dans la bonne catégories apparaissent en vert, les mauvaises réponses en rouge et les omissions en gris. On marque un point pour les bonnes réponses, on perd un demi point our une mauvaise réponse, on perd un demi-point pour une omission. Lorsque deux réponses sont possibles, on marque un point quelque soit la relation choisie. Le score final est soit un entier, un entier plus un demi point. Le score final peut être négatif, zéro ou positif.
|
||||
|
||||
Lorsque l'on clique sur le bouton \"J'ai vu !\", on retourne sur la page d'accueil :
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width=14cm]{img/PtiClicAccueil.png}
|
||||
\end{center}
|
||||
|
||||
Le joueur par défaut est l'utilisateur "joueur". Il est aussi possible de s'inscrire sur le site afin de créer son propre identifiant et mot de passe afin de cumuler des points à chaque fois que l'on joue. Les dix joueurs qui ont cumulé les plus grand nombre de points sont inscrit sur la liste des \"Top 10\". Les points cumulés par le joueur "joueur", qui est l'ensemble de parties jouées par des internautes non inscrits au site, figure parmi les \"Top 10\". A droite de ceci, le score du joueur en question, c'est-à-dire, la somme totale des scores de toutes les parties jouées par l'utilisateur. Si l'utilisateur veut jouer encore une partie, il clique sur le bouton \"Je joue !\" en bas de la page et une nouvelle partie est entamée.
|
||||
|
||||
Huit styles de couleurs sont disponible et modifiable dans le menu déroulant en haut et à droite de la page d'accueil. Lorsque le joueur s'authifie avec succès, son identifiant apparaît dans le fond de page en très grande taille.
|
||||
|
||||
TODO: MES AMIS ---> EXPLICATION DE COMMENT SONT CALCULES LES SCORES, C'EST PAR RAPPORT A UN AUTRE JOUEUR JE PENSE, ET NON PAS PAR RAPPORT A UN DICO...
|
||||
|
||||
Lorsqu'un utilisateur souhaite s'inscrire au site, il est invité à lire un document explicatif de l'objectif du jeu dans le cadre de la recherche. L'utilisateur est aussi averti concernant le contenu du jeu ; le jeu est déconseillé aux personnes en dessous de 16 ans.
|
||||
|
||||
|
||||
|
||||
\subsection{Le dump de la base de données}
|
||||
|
||||
Le dump de la base de données est un fichier plat de plus de 2 000 000 de lignes. Ce fichier contient un grand nombre de caractères accentués et la version que nous avions à notre disposition lorsque nous avions dû commencer à l'analyser, en extraire des données et puis créer notre propre base de données, n'était pas encodé en UTF-8.
|
||||
|
||||
La base de données à laquelle correspond le dump est aussi celle utilisée pour un autre jeu de l'équipe TALN du Lirmm, celui du Jeux de mots.
|
||||
|
||||
Le dump contient en tout début des remerciements et quelques explications des acronymes et des abbréviations utilisés, puis des statistiques, à savoir, le nombre d'occurrences de relations, la fréquence des noeuds, les 50 termes les plus fréquents. Plus un terme ou expression est fréquent, plus son poids est élevé.
|
||||
|
||||
|
||||
Le dump a proprement parler contient deux grandes parties : la partie des mots et expressions (NODES) et la partie des relations (RELATIONS).
|
||||
|
||||
Dans la partie mots et expressions, chaque entrée -- chaque ligne -- contient un eid (Entry IDentifier), un nom n (name), un type t et un poids w (weight). En voici un exemple~:
|
||||
|
||||
%eid=231064:n=\"pour femme\":t=1:w=50
|
||||
|
||||
Pour a partie relation, l'identifiant est le rid (Relation IDentifier), le noeud de début n1 (starting node), le noeud de fin n2 (ending node), le type (relation type) et le poids w (weight). En voici un exemple~:
|
||||
|
||||
%rid=430049:n1=82029:n2=151553:t=12:w=18
|
||||
|
||||
|
||||
\subsection{Analyse approfondie du jeu}
|
||||
Bien que le dump de la base de données contienne 39 relations différentes, la version en ligne du jeu du PtiClic ne contient que dix relations~:
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
\item r\_associated|0|idée|Tout terme lié d'une façon ou d'une autre au mot cible... Ce mot vous fait penser à quoi~? \\
|
||||
{\bf \verb![mot central]! est en rapport avec...}
|
||||
|
||||
\item r\_associated|0|idée|Tout terme lié d'une façon ou d'une autre au mot cible... Ce mot vous fait penser à quoi~? \\
|
||||
{\bf \verb![mot central]! est en rapport avec...}
|
||||
|
||||
\item r\_syn|5|synonyme|A partir d'un terme, il est demandé d'énumérer les synonymes ou quasi-synonymes de ce terme. \\
|
||||
{\bf \verb![mot central]! a comme synonyme...}
|
||||
|
||||
\item r\_isa|6|générique|'animal' est un générique de 'chat', 'mammifère', 'être vivant' etc. en sont d'autres... \\
|
||||
{\bf \verb![mot central]! est une sorte de...}
|
||||
|
||||
\item r\_anto|7|contraire|'chaud' est le contraire de 'froid', vous vous rappelez~? :) \\
|
||||
{\bf Un contraire de \verb![mot central]! est...}
|
||||
|
||||
\item r\_hypo|8|spécifique|'mouche', 'abeille', 'guêpe' sont des spécifiques de 'insecte'... \\
|
||||
{\bf un spécifique de \verb![mot central]! est...}
|
||||
|
||||
\item r\_has\_part|9|partie|Il faut donner des parties/constituants/éléments du mot cible. Par exemple, 'voiture' pourrait avoir comme parties : 'porte', 'roue', 'moteur', ... \\
|
||||
{\bf ... est une partie de \verb![mot central]!}
|
||||
|
||||
\item r\_agent|13|action>agent|L'agent (qu'on appelle aussi le sujet) est l'entité qui effectue l'action. Par exemple dans - Le chat mange la souris -, l'agent est le chat. Des agents typiques de 'courir' peuvent être 'sportif', 'enfant',... \\
|
||||
{\bf Quoi/Qui pourrait \verb![mot central]!~?}
|
||||
|
||||
\item r\_lieu|15|chose>lieu|A partir d'un nom d'objet (ou autre), il est demandé d'énumérer les lieux typiques ou peut se trouver l'objet en question. \\
|
||||
{\bf Un lieu pour \verb![mot central]! est...}
|
||||
|
||||
\item r\_instr|16|action>instrument|L'instrument est l'objet avec lequel on fait l'action. Dans - Il mange sa salade avec une fourchette -, fourchette est l'instrument. Des instruments typiques de 'tuer' peuvent être 'arme', 'pistolet', 'poison', ... \\
|
||||
{\bf Un instrument pour \verb![mot central]! est...}
|
||||
|
||||
\item r\_carac|17|caractéristique|Pour une terme donné, en général un objet, il est demandé d'énumérer les caractéristiques possibles et/ou typiques de cet objet. Par exemple, pour 'eau' on pourra avoir 'liquide', 'froide', 'chaude', etc. \\
|
||||
{\bf Une caractéristique de \verb![mot central]! est...}
|
||||
|
||||
\end{itemize}
|
||||
|
||||
Vingt-neufs relations qui figurent dans la base de données d'origine ne sont pas utilisées dans l'application~:
|
||||
|
||||
\begin{itemize}
|
||||
\item r\_raff\_sem|1|raffinement sémantique|Raffinement sémantique vers un usage particulier du terme source
|
||||
|
||||
\item r\_raff\_morpho|2|raffinement morphologique|Raffinement morphologique vers un usage particulier du terme source
|
||||
|
||||
\item r\_domain|3|domaine|Il est demandé de fournir des domaines relatifs au mot cible. Par exemple, pour 'corner', on pourra donner les domaines 'football' ou 'sport'.
|
||||
|
||||
\item r\_pos|4|r\_pos|Partie du discours (Nom, Verbe, Adjectif, Adverbe, etc.)
|
||||
|
||||
\item r\_holo|10|tout|Le tout est ce qui contient l'objet en question. Pour 'main', on aura 'bras', 'corps', 'personne', etc... On peut aussi voir le tout comme l'ensemble auquel appartient un élément, comme 'classe' pour 'élève'.
|
||||
|
||||
\item r\_locution|11|locution|A partir d'un terme, il est demandé d'énumérer les locutions, expression ou mots composés en rapport avec ce terme. Par exemple, pour 'moulin', ou pourra avoir 'moulin à vent', 'moulin à eau', 'moulin à café'. Pour 'vendre', on pourra avoir 'vendre la peau de l'ours avant de l'avoir tué', 'vendre à perte', etc..
|
||||
|
||||
\item r\_flpot|12|potentiel de FL|(interne) potentiel de relation
|
||||
|
||||
\item r\_patient|14|action>patient|Le patient (qu'on appelle aussi l'objet) est l'entité qui subit l'action. Par exemple dans - Le chat mange la souris -, le patient est la souris. Des patients typiques de manger peuvent être 'viande', 'légume', 'pain', ...
|
||||
|
||||
\item r\_data|18|r\_data|Informations diverses
|
||||
|
||||
\item r\_lemma|19|r\_lemma|Le lemme
|
||||
|
||||
\item r\_magn|20|magn|La magnification ou amplification, par exemple - forte fièvre - ou - fièvre de cheval - pour fièvre. Ou encore - amour fou - pour amour, - peur bleue - pour peur.
|
||||
|
||||
\item r\_antimagn|21|antimagn|L'inverse de la magnification, par exemple - bruine - pour pluie.
|
||||
|
||||
\item r\_familly|22|famille|Des mots de la même famille sont demandés. Par exemple, pour 'lait' on pourrait mettre 'laitier', 'laitage', 'laiterie', etc.
|
||||
|
||||
\item r\_chunk\_pred|29|predicat|(interne) d'un chunk quel prédicat ?
|
||||
|
||||
\item r\_lieu\_action|30|lieu>action|A partir d'un lieu, énumérer les action typiques possibles dans ce lieu.
|
||||
|
||||
\item r\_action\_lieu|31|action>lieu|A partir d'une action (un verbe), énumérer les lieux typiques possibles où peut être réalisée cette action.
|
||||
|
||||
\item r\_sentiment|32|sentiment|Pour un terme donné, évoquer des SENTIMENTS ou EMOTIONS que vous pourriez associer à ce terme. Par exemple, la joie, le plaisir, le dégoût, la peur, la haine, l'amour, l'indifférence, l'envie, etc.
|
||||
|
||||
\item r\_error|33|erreur|lien d'erreur
|
||||
|
||||
\item r\_maner|34|manière|De quelles MANIERES peut être effectuée l'action (le verbe) proposée. Il s'agira d'un adverbe ou d'un équivalent comme une locution adverbiale, par exemple : 'rapidement', 'sur le pouce', 'goulûment', 'salement' ... pour 'manger'.
|
||||
|
||||
\item r\_meaning|35|sens/signification|Quels SENS/SIGNIFICATIONS pouvez vous donner au terme proposé. Il s'agira de termes évoquant chacun des sens possibles, par exemple : 'forces de l'ordre', 'contrat d'assurance', 'police typographique', ... pour 'police'.
|
||||
|
||||
\item r\_infopot|36|information potentielle|Information sémantique potentielle
|
||||
|
||||
\item r\_telic\_role|37|rôle télique|Le rôle télique indique le but ou la fonction du nom. Par exemple, couper pour couteau, scier pour scie, etc.
|
||||
|
||||
\item r\_agentif\_role|38|rôle agentif|Le rôle agentif indique le mode de création du nom. Par exemple, construire pour maison, rédiger ou imprimer pour livre, etc.
|
||||
|
||||
\item r\_causatif|42|cause|B (que vous devez donner) est une cause possible de A. A et B sont des verbes ou des noms. Exemples : se blesser -> tomber ; vol -> pauvreté ; incendie -> négligence ; mort --> maladie ; etc.
|
||||
|
||||
\item r\_conseq|41|conséquence|B (que vous devez donner) est une conséquence possible de A. A et B sont des verbes ou des noms. Exemples : tomber -> se blesser ; faim -> voler ; allumer -> incendie ; négligence --> accident ; etc.
|
||||
|
||||
\item r\_succession|52|succession|Qu'est ce qui peut SUIVRE (par exemple Noêl -> jour de l'an, guerre -> paix, jour -> nuit, pluie -> beau temps, repas -> sieste, etc) le terme suivant :
|
||||
|
||||
\item r\_make|53|produit|Que peut PRODUIRE le terme ? (par exemple abeille -> miel)
|
||||
|
||||
\item r\_product\_of|54|est le produit de|Le terme est le RESULTAT/PRODUIT de quoi ?
|
||||
|
||||
\item r\_against|55|s'oppose à|A quoi le terme suivant S'OPPOSE/COMBAT/EMPECHE ?
|
||||
|
||||
\end{itemize}
|
||||
|
||||
\section{Analyse des besoins}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section{Conception}
|
||||
|
||||
\begin{verbatim}
|
||||
|
@ -114,7 +291,7 @@ TODO: UML, diagrammes de classes, Use cases, etc...
|
|||
\subsubsection{Android Software Development Kit (SDK)}
|
||||
\subsubsection{Gestionnaire de version~: GitHub}
|
||||
\subsubsection{JUnit}
|
||||
\subsubsection{d'autres subsubsections ?}
|
||||
\subsubsection{d'autres subsubsections~?}
|
||||
|
||||
|
||||
\section{Discussion}
|
||||
|
@ -213,5 +390,47 @@ Utilisation d'une classe \verb!Constant!
|
|||
|
||||
\section{Annexe B}
|
||||
|
||||
%\subsection{Serveur}
|
||||
|
||||
****SQL****
|
||||
2011-m1s2-ter\/code\/serveur\$ ls
|
||||
02122011-LEXICALNET-JEUXDEMOTS-FR-NOHTML.txt -- dump de Lafourcade
|
||||
dump.url -- contient l'URL du dump le plus récent
|
||||
dump2mysql.sh -- Script pour convertir dump de Lafourcade en sql (pas terminé~? On utilise sqlite, donc on a laissé tombé~?)
|
||||
dump2sqlite.sh -- Script pour convertir dump de Lafourcade en sql
|
||||
parties.json -- ??
|
||||
README.sh -- Ce n'est pas un README, c'est un script pour faire l'ensemble de la création de la BD, du téléchargement à la création d'indexes en passant par la création des tables et les insertions.
|
||||
sql -- Le script sql à proprement parler
|
||||
php\/db -- fichier binaire sqlite pour le chargement de la bd
|
||||
php\/db.old -- fichier binaire sqlite pour le chargement de la bd, version précédente (backup)
|
||||
dossier: select
|
||||
|
||||
****SERVEUR****
|
||||
php\/db.php -- fichier pour ouvrir et fermer ou récupérer l'instance de l'ouverture de la base de données à l'aide d'un singleton.
|
||||
Fichier très court, deux fonctions seulement.
|
||||
php\/pticlic.php -- contient un grand nombre de fonctions pour le jeu
|
||||
php\/relations.php -- contient un tableau et les phrases 'relation'
|
||||
php\/server.php --
|
||||
php\/showGame.php -- ??
|
||||
|
||||
|
||||
|
||||
****SITE****
|
||||
php\/contact.php
|
||||
php\/createGame.php
|
||||
php\/download.php
|
||||
php\/index.php
|
||||
php\/login.php
|
||||
php\/showGame.php -- ??
|
||||
php\/signup.php
|
||||
php\/ressources/backend.css -- CSS pour showGame.php
|
||||
php\/ressources/footer.inc -- pied de pages du site
|
||||
php\/ressources/locations.inc -- petit fichier facilitant la navigation de page en page
|
||||
php\/ressources/menu.inc -- menu du site
|
||||
php\/ressources/pticlic-alpha-v0.1.apk -- exécutable PtiClic (fichier d'installation de l'application)
|
||||
php\/ressources/showmsg.inc -- ?? (pour l'affichage des messages... mais dans quel contexte~? Pourquoi~?)
|
||||
php\/ressources/simple.css -- CSS de base du site
|
||||
php\/ressources/strings.inc -- fichier de configuration des strings (phrases utilisés de manière répétitive dans le site, par exemple, les messages d'erreurs)
|
||||
|
||||
\end{document}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user