Commit bc3ec51a authored by maryam's avatar maryam
Browse files

done

parents
<IfModule mod_php4.c>
php_value session.gc_maxlifetime 10800
php_value max_input_time 10800
php_value max_execution_time 10800
php_value upload_max_filesize 500M
php_value post_max_size 500M
</IfModule>
\ No newline at end of file
System Install
================
Requirements
-------------
* Apache Server with PHP 5.3+
* MySQL
* Chrome
* Javascript activated
Installation
-------------
*Download and unzip the file from GitHub
*Inside, select the tab.sql file an import it on your server via your database management system
*Select the file sys/db.config.php and insert your server identifying data
*The web site is ready to work (don't forget to use Chrome)
The MIT License (MIT)
Copyright (c) <2014> <Innovalangues>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
====
## The MIT License (MIT)
Copyright © 2013 [Muaz Khan](https://github.com/muaz-khan)<[@muazkh](http://twitter.com/muazkh)>.
Permission is hereby granted, free of charge, to any person obtaining a copy of these [WebRTC Experiments](https://github.com/muaz-khan/WebRTC-Experiment) and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
MIT: https://www.webrtc-experiment.com/licence/
Game of Words
================
Game of Words was created as part of the GAMER work package in the Innovalangues project at Stendhal University in Grenoble, France. Innovalangues is the only language oriented project within IDEFI (Initiatives in Excellence for Innovative Education) and will run from 2012 to 2018. This first version of Game of Words was designed and developed by two students of linguistics in the Language Industries master's program, Chloé Cimpello and Justine Reverdy, for their end-of-study professional project. Initially conceived for learners of French and with a few less fonctionnalities English, the Innovalanges project hopes to adapt Game od Words for additional languages.
Rules
-------
Game of Words is a taboo-like game, developed as a learning aid for foreign language learners.
The game has three roles to play : Oracle, Druid, and Diviner.
* As an Oracle the user must produce descriptions of words without using the taboo words associated.
* As a Druid the user can create card form scratch, or arbitrate a ddescription made by an Oracle to check if he didn't used forbbiden words.
* As a Diviner the user must find as quickly as possible the words that where meant to be find with the descriptions of the Oracle.
Requirements
-------------
* Apache Server with PHP 5.3+
* MySQL
* Chrome
* Javascript activated
<?php
class diviner_game
{
private $mode = '';
private $errors = array();
private $motadeviner='';
private $nivcarte = '';
private $userlang = '';
private $user= '';
private $diviner= '';
private $raisin ='';
private $res2 = '';
private $res3 = '';
private $res4 = '';
private $res5 = '';
private $result= '';
private $sanction ='';
private $score='';
private $carteValide = false;
private $adresse = '';
private $reussie = 'en cours';
private $temps='';
public function set_mode($mode)
{
$this->mode = $mode;
}
public function process()
{
if ( $this->init() )
{
$this->sanctionLastPartie();
if($this->selectpartie()){
$this->update();
}
return $this->display();
}
return false;
}
private function init()
{
//récupération des informations de base : id user et sa langue
$this->user = user::getInstance();
$this->diviner = $this->user->id;
$this->userlang = $this->user->userlang;
$this->temps = date("d/m/Y H:i:s");
return true;
}
private function sanctionLastPartie()
{ // fonction qui permet de vérifier l'état de la dernière partie et de sanctionner le joueur de 5 pts s'il a quitté la partitatut = "en cours")
$db = db::getInstance();
$sql = "SELECT *
FROM parties WHERE idDevin = \"".$this->diviner."\"
ORDER BY parties.tpsDevin DESC
LIMIT 1";
$res=$db->query($sql);
$this->sanction = mysqli_fetch_assoc($res);
if($this->sanction['reussie'] == "en cours"){
$sql = "SELECT scoreDevin
FROM score
WHERE userid ='".$this->diviner."'";
$res = $db->query($sql);
$this->score = mysqli_fetch_assoc($res);
if ($this->score['scoreDevin'] >= 5){
$this->score['scoreDevin']-=5;
$sql='UPDATE score
SET scoreDevin="'.$this->score['scoreDevin'].'"
WHERE userid="'.$this->diviner.'"';
$res=$db->query($sql);
echo "blablé";
}
else{
echo "boubou";
}
}
echo "KFC";
}
private function selectpartie()
{
// récupération de plusieurs enregistrements dans sa langue et dont il n'est pas l'oracle
$db = db::getInstance();
$sql = 'SELECT
enregistrementID,cheminEnregistrement,idOracle,carteID,nivcarte
FROM enregistrement WHERE idOracle!='.$this->diviner.' AND OracleLang="'.$this->userlang.'" AND validation="valid" ORDER BY RAND() LIMIT 100';
$this->result=$db->query($sql);
$nb_result=$this->result->num_rows;
//pour chaque enregistrement:
for ($i = 1; $i <= $nb_result; $i++)
{
$this->raisin= mysqli_fetch_assoc($this->result);
// construction de l'adresse de l'enregistrement à partir du nom du fichier son
$this->adresse = "enregistrements/".$this->raisin['cheminEnregistrement'];
//initialisation du booléen qui représentera la condition finale pour que la partie soit acceptée
// Il deviendra faux si le moindre critère n'est pas rempli durant la procédure
$partieok=true;
//Connexion à la BD
$db = db::getInstance();
//récupération du contenu de la carte
$sql = 'SELECT
idDruide,niveau,mot,tabou1,tabou2,tabou3,tabou4,tabou5
FROM carte WHERE carteID='.$this->raisin['carteID'].'';
$res=$db->query($sql);
$this->res3= mysqli_fetch_assoc($res);
//récupération de l'éventuelle partie que le devin aurait fait sur cet enregistrement pour ne pas le re-proposer
$sql = 'SELECT reussie
FROM parties WHERE idDevin ="'.$this->diviner.'" AND enregistrementID= "'.$this->raisin['enregistrementID'].'"';
$res=$db->query($sql);
$this->res5= mysqli_fetch_assoc($res);
// si le créateur de la carte et le devin sont la même personne, on passe à l'enregistrement suivant
if ($this->res3['idDruide'] == $this->diviner)
{
$partieok=false;
}
// si le devin a déjà joué cette carte et a eu un résultat (faux ou juste), on passe à l'enregistrement suivant.
//Si cette partie a été quitté précipitemment ou à cause d'un pb technique (reussie=en cours), il peut la rejouer.
if(($this->res5['reussie']=="oui")||($this->res5['reussie']=="non")||($this->res5['reussie']=="en cours")) #A modifier!
{
$partieok=false;
}
// si rien de s'oppose à ce que l'enregistrement soit proprosé
if ($partieok)
{
// récupération du pseudo de l'oracle pour savoir qui on écoute
$db = db::getInstance();
$sql = 'SELECT username
FROM user WHERE userid ="'.$this->raisin['idOracle'].'"';
$res=$db->query($sql);
$this->res2= mysqli_fetch_assoc($res);
//récupération du pseudo du créateur de la carte
$db = db::getInstance();
$sql = 'SELECT username
FROM user WHERE userid ="'.$this->res3['idDruide'].'"';
$res=$db->query($sql);
$this->res4= mysqli_fetch_assoc($res);
$this->setcarteValide($partieok);
return true;
}
}
return false;
}
private function update()
{
//Insertion des informations dans la table parties
//connexion à la bd
$db = db::getInstance();
$sql = 'INSERT INTO parties
(enregistrementID,idDevin,tpsDevin,reussie)
VALUES(' .
$db->escape((string) $this->raisin['enregistrementID']).','.
$db->escape((string) $this->diviner) . ','.
$db->escape((string) $this->temps) . ','.
$db->escape((string) $this->reussie).')';
$db->query($sql);
return false;
}
private function display()
{
include('./views/diviner.game.html');
return true;
}
public function setcarteValide ($state){
$this->carteValide=$state;
}
public function getcarteValide(){
return $this->carteValide;
}
}
?>
<?php
class diviner_game
{
private $mode = '';
private $errors = array();
private $motadeviner='';
private $nivcarte = '';
private $userlang = '';
private $user= '';
private $diviner= '';
private $raisin ='';
private $res2 = '';
private $res3 = '';
private $res4 = '';
private $res5 = '';
private $result= '';
public $enregistrementID = '';po
private $adresse = '';
private $reussie = 'en cours';
private $temps='';
public function set_mode($mode)
{
$this->mode = $mode;
}
public function process()
{
if ( $this->init() )
{
$this->selectpartie();
$this->update();
return $this->display();
}
return false;
}
private function init()
{
//récupération des informations de base : id user et sa langue
$this->user = user::getInstance();
$this->diviner = $this->user->id;
$this->userlang = $this->user->userlang;
$this->temps = date("d/m/Y H:i:s");
return true;
}
private function selectpartie()
{
// récupération de plusieurs enregistrements dans sa langue et dont il n'est pas l'oracle
$db = db::getInstance();
$sql = 'SELECT
enregistrementID,cheminEnregistrement,idOracle,carteID,nivcarte
FROM enregistrement WHERE idOracle!='.$this->diviner.' AND OracleLang="'.$this->userlang.'" AND validation="valid" ORDER BY RAND() LIMIT 100';
$this->result=$db->query($sql);
$nb_result=$this->result->num_rows;
//pour chaque enregistrement:
for ($i = 1; $i <= $nb_result; $i++)
{
$this->raisin= mysqli_fetch_assoc($this->result);
// construction de l'adresse de l'enregistrement à partir du nom du fichier son
$this->adresse = "enregistrements/".$this->raisin['cheminEnregistrement'];
//initialisation du booléen qui représentera la condition finale pour que la partie soit acceptée
// Il deviendra faux si le moindre critère n'est pas rempli durant la procédure
$partieok=true;
//Connexion à la BD
$db = db::getInstance();
//récupération du contenu de la carte
$sql = 'SELECT
idDruide,niveau,mot,tabou1,tabou2,tabou3,tabou4,tabou5
FROM carte WHERE carteID='.$this->raisin['carteID'].'';
$res=$db->query($sql);
$this->res3= mysqli_fetch_assoc($res);
//récupération de l'éventuelle partie que le devin aurait fait sur cet enregistrement pour ne pas le re-proposer
$sql = 'SELECT reussie
FROM parties WHERE idDevin ="'.$this->diviner.'" AND enregistrementID= "'.$this->raisin['enregistrementID'].'"';
$res=$db->query($sql);
$this->res5= mysqli_fetch_assoc($res);
// si le créateur de la carte et le devin sont la même personne, on passe à l'enregistrement suivant
if ($this->res3['idDruide'] == $this->diviner)
{
$partieok=false;
}
// si le devin a déjà joué cette carte et a eu un résultat (faux ou juste), on passe à l'enregistrement suivant.
//Si cette partie a été quitté précipitemment ou à cause d'un pb technique (reussie=en cours), il peut la rejouer.
if(($this->res5['reussie']=="oui")|($this->res5['reussie']=="non"))
{
$partieok=false;
}
// si rien de s'oppose à ce que l'enregistrement soit proprosé
if ($partieok)
{
// récupération du pseudo de l'oracle pour savoir qui on écoute
$db = db::getInstance();
$sql = 'SELECT username
FROM user WHERE userid ="'.$this->raisin['idOracle'].'"';
$res=$db->query($sql);
$this->res2= mysqli_fetch_assoc($res);
//récupération du pseudo du créateur de la carte
$db = db::getInstance();
$sql = 'SELECT username
FROM user WHERE userid ="'.$this->res3['idDruide'].'"';
$res=$db->query($sql);
$this->res4= mysqli_fetch_assoc($res);
Â
$enregistrementID = $this->raisin['enregistrementID'];
return true;
}
}
// Sinon, aucun enregistrement n'est compatible
echo "aucune partie disponible pour l'instant.";
return false;
}
private function update()
{
if($this->res5['reussie']!="en cours"){
//Insertion des informations dans la table parties
//connexion à la bd
$db = db::getInstance();
echo $this->raisin['enregistrementID'];
$sql = 'INSERT INTO parties
(enregistrementID,idDevin,tpsDevin,reussie)
VALUES(' .
$db->escape((string) $this->raisin['enregistrementID']).','.
$db->escape((string) $this->diviner) . ','.
$db->escape((string) $this->temps) . ','.
$db->escape((string) $this->reussie).')';
$db->query($sql);
return false;
}
}
private function display()
{
include('./views/diviner.game.html');
return true;
}
}
?>
<?php
class diviner_game
{
private $mode = '';
private $errors = array();
private $motadeviner='';
private $nivcarte = '';
private $userlang = '';
private $user= '';
private $diviner= '';
private $raisin ='';
private $res2 = '';
private $res3 = '';
private $res4 = '';
private $res5 = '';
private $result= '';
private $sanction ='';
private $score='';
private $carteValide = false;
private $adresse = '';
private $reussie = 'en cours';
private $temps='';
public function set_mode($mode)
{
$this->mode = $mode;
}
public function process()
{
if ( $this->init() )
{
$this->sanctionLastPartie();
if($this->selectpartie()){
$this->update();
}
return $this->display();
}
return false;
}
private function init()
{
//récupération des informations de base : id user et sa langue
$this->user = user::getInstance();
$this->diviner = $this->user->id;
$this->userlang = $this->user->userlang;
$this->temps = date("d/m/Y H:i:s");
return true;
}
private function sanctionLastPartie()
{ // fonction qui permet de vérifier l'état de la dernière partie et de sanctionner le joueur de 5 pts s'il a quitté la partitatut = "en cours")
$db = db::getInstance();
$sql = "SELECT *
FROM parties WHERE idDevin = \"".$this->diviner."\"
ORDER BY parties.tpsDevin DESC
LIMIT 1";
$res=$db->query($sql);
$this->sanction = mysqli_fetch_assoc($res);
if($this->sanction['reussie'] == "en cours"){
$sql = "SELECT scoreDevin
FROM score
WHERE userid ='".$this->diviner."'";
$res = $db->query($sql);
$this->score = mysqli_fetch_assoc($res);
if ($this->score['scoreDevin'] >= 5){
$this->score['scoreDevin']-=5;
$sql='UPDATE score
SET scoreDevin="'.$this->score['scoreDevin'].'"
WHERE userid="'.$this->diviner.'"';
$res=$db->query($sql);
echo "blablé";
}
else{
echo "boubou";
}
}
echo "KFC";
}
private function selectpartie()
{
// récupération de plusieurs enregistrements dans sa langue et dont il n'est pas l'oracle
$db = db::getInstance();
$sql = 'SELECT
enregistrementID,cheminEnregistrement,idOracle,carteID,nivcarte
FROM enregistrement WHERE idOracle!='.$this->diviner.' AND OracleLang="'.$this->userlang.'" AND validation="valid" ORDER BY RAND() LIMIT 100';
$this->result=$db->query($sql);
$nb_result=$this->result->num_rows;
//pour chaque enregistrement:
for ($i = 1; $i <= $nb_result; $i++)
{
$this->raisin= mysqli_fetch_assoc($this->result);
// construction de l'adresse de l'enregistrement à partir du nom du fichier son
$this->adresse = "enregistrements/".$this->raisin['cheminEnregistrement'];
//initialisation du booléen qui représentera la condition finale pour que la partie soit acceptée
// Il deviendra faux si le moindre critère n'est pas rempli durant la procédure
$partieok=true;
//Connexion à la BD
$db = db::getInstance();
//récupération du contenu de la carte
$sql = 'SELECT
idDruide,niveau,mot,tabou1,tabou2,tabou3,tabou4,tabou5
FROM carte WHERE carteID='.$this->raisin['carteID'].'';
$res=$db->query($sql);
$this->res3= mysqli_fetch_assoc($res);
//récupération de l'éventuelle partie que le devin aurait fait sur cet enregistrement pour ne pas le re-proposer
$sql = 'SELECT reussie
FROM parties WHERE idDevin ="'.$this->diviner.'" AND enregistrementID= "'.$this->raisin['enregistrementID'].'"';
$res=$db->query($sql);
$this->res5= mysqli_fetch_assoc($res);
// si le créateur de la carte et le devin sont la même personne, on passe à l'enregistrement suivant
if ($this->res3['idDruide'] == $this->diviner)
{
$partieok=false;
}
// si le devin a déjà joué cette carte et a eu un résultat (faux ou juste), on passe à l'enregistrement suivant.
//Si cette partie a été quitté précipitemment ou à cause d'un pb technique (reussie=en cours), il peut la rejouer.
if(($this->res5['reussie']=="oui")||($this->res5['reussie']=="non")||($this->res5['reussie']=="en cours")) #A modifier!
{
$partieok=false;
}
// si rien de s'oppose à ce que l'enregistrement soit proprosé
if ($partieok)
{
// récupération du pseudo de l'oracle pour savoir qui on écoute
$db = db::getInstance();
$sql = 'SELECT username
FROM user WHERE userid ="'.$this->raisin['idOracle'].'"';