Brendan Abolivier 9 лет назад
Родитель
Сommit
fb39da15ee

+ 2
- 0
.gitignore Просмотреть файл

@@ -2,3 +2,5 @@
2 2
 .*.swp
3 3
 
4 4
 test*
5
+
6
+*~

+ 54
- 8
web/api/model/class.categorie.php Просмотреть файл

@@ -1,18 +1,40 @@
1 1
 <?php
2 2
 
3
+/*******************************************************************************
4
+* Classe Categorie																														 *
5
+*	Auteur : Brendan Abolivier																									 *
6
+* Fonction : Créer un objet représentatif d'une catégorie											 *
7
+*																																							 *
8
+*	Attribut :																																	 *
9
+*		$bdd : Connector																												   *
10
+*		$nomCat : String																												 	 *
11
+*		$questsets : Array (Questset)																							 *
12
+*																																							 *
13
+* Méthodes :																																	 *
14
+*		__construct()																															 *
15
+*		randSelect() [statique]																										 *
16
+*		getArray()																																 *
17
+*******************************************************************************/
3 18
 class Categorie {
4 19
 	private $bdd;
5 20
 	private $nomCat;
6 21
 	private $questsets;
7 22
 
23
+	/*****************************************************************************
24
+	* Méthode __construct()                                                      *
25
+	*	Fonction : Constructeur, crée un objet Categorie à partir de son nom			 *
26
+	*																																						 *
27
+	*	Paramètres :																															 *
28
+	*		$nomCat (String) : Nom de la catégorie																	 *
29
+	*																																						 *
30
+	*	Retour : Aucun																														 *
31
+	*																																						 *
32
+	*	Exceptions :																															 *
33
+	*		cant_find_cat : La catégorie est introuvable dans la base de données		 *
34
+	*****************************************************************************/
8 35
 	function __construct($nomCat) {
9 36
 		$this->bdd = new Connector();
10
-		$this->selectCat($nomCat);
11
-		$this->questsets = array();
12
-		$this->load();
13
-	}
14 37
 
15
-	private function selectCat($nomCat) {
16 38
 		$options = array(
17 39
 			"where" => array(
18 40
 				array("nom_cat", "=", $nomCat)
@@ -24,9 +46,9 @@ class Categorie {
24 46
 		} else {
25 47
 			throw new Exception('cant_find_cat');
26 48
 		}
27
-	}
28 49
 
29
-	private function load() {
50
+		$this->questsets = array();
51
+
30 52
 		$options = array(
31 53
 			"where" => array(
32 54
 				array("nom_cat", "=", $this->nomCat)
@@ -37,10 +59,22 @@ class Categorie {
37 59
 
38 60
 		$resp = $this->bdd->Select('*', 'reponses', $options);
39 61
 		foreach($resp as $questset) {
40
-			array_push($this->questsets, new Questset(array($questset['reponse1'], $questset['reponse2'])));
62
+			array_push($this->questsets, new Questset(array($questset['reponse1'],
63
+																											$questset['reponse2'])));
41 64
 		}
42 65
 	}
43 66
 
67
+	/*****************************************************************************
68
+	* Méthode randSelect() [statique]                                            *
69
+	*	Fonction : Sélectionne aléatoirement deux catégories valides (au moins 		 *
70
+	*						 deux thèmes avec chacun au moins trois questions)			 				 *
71
+	*																																						 *
72
+	*	Paramètres : Aucun																												 *
73
+	*																																						 *
74
+	*	Retour :																																	 *
75
+	*		Tableau contenant deux objets Categorie valides, sélectionnés						 *
76
+	*			aléatoirement																													 *
77
+	*****************************************************************************/
44 78
 	public static function randSelect() {
45 79
 		$bdd = new Connector();
46 80
 		$options = array(
@@ -50,6 +84,7 @@ class Categorie {
50 84
 		$return = array();
51 85
 		$catIndex = -1;
52 86
 		$previousIndex = -1;
87
+		// On retire du tableau les catégories invalides
53 88
 		for($i = 0; $i < sizeof($arrayCat); $i++) {
54 89
 			$category = new Categorie($arrayCat[$i]['nom_cat']);
55 90
 			if(sizeof($category->getArray()['themes']) >=2) {
@@ -62,6 +97,7 @@ class Categorie {
62 97
 				array_splice($arrayCat, $i, 1);
63 98
 			}
64 99
 		}
100
+		// On sélectionne deux catégories dans celles restantes
65 101
 		for($i = 0; $i < 2; $i++) {
66 102
 			array_push($return, new Categorie($arrayCat[$i]['nom_cat']));
67 103
 		}
@@ -69,6 +105,16 @@ class Categorie {
69 105
 		return $return;
70 106
 	}
71 107
 
108
+	/*****************************************************************************
109
+	* Méthode getArray()						                                             *
110
+	*	Fonction : Renvoie un tableau représentant la catégorie courante	 				 *
111
+	*																																						 *
112
+	*	Paramètres : Aucun																												 *
113
+	*																																						 *
114
+	*	Retour :																																	 *
115
+	*		Tableau contenant le nom de la catégorie, ainsi qu'un tableau des thèmes *
116
+	*			inclus dans cette dernière (méthode getArray() de la classe Questset)	 *
117
+	*****************************************************************************/
72 118
 	public function getArray() {
73 119
 		$questsets = array();
74 120
 		foreach($this->questsets as $questset) {

+ 101
- 13
web/api/model/class.connector.php Просмотреть файл

@@ -1,9 +1,34 @@
1 1
 <?php
2 2
 
3
+/*******************************************************************************
4
+* Classe Connector																														 *
5
+*	Auteur : Brendan Abolivier																									 *
6
+* Fonction : Permettre une gestion plus facile et plus claire de la connexion  *
7
+*						 au serveur MySQL																									 *
8
+*																																							 *
9
+*	Attribut :																																	 *
10
+*		$bdd : objet PDO																													 *
11
+*																																							 *
12
+* Méthodes :																																	 *
13
+*		__construct()																															 *
14
+*		Select()																																	 *
15
+*		Insert()																																	 *
16
+*		Update()																																	 *
17
+*******************************************************************************/
3 18
 class Connector {
4 19
 
5 20
 	private $bdd;
6 21
 
22
+	/*****************************************************************************
23
+	* Méthode __construct()                                                      *
24
+	*	Fonction : Constructeur, initie la connexion à la base de données via PDO, *
25
+	*					   en utilisant les paramètres définis dans le fichier params.cfg  *
26
+	*						 par l'utilisateur                                               *
27
+	*																																						 *
28
+	*	Paramètres : Aucun																												 *
29
+	*																																						 *
30
+	*	Retour : Aucun																														 *
31
+	*****************************************************************************/
7 32
 	function __construct() {
8 33
 		$params = file_get_contents("../params.cfg");
9 34
 		preg_match_all('/db_(.+)\: (.+)/', $params, $matches);
@@ -12,22 +37,46 @@ class Connector {
12 37
 			$dbconnect[$matches[1][$i]] = $matches[2][$i];
13 38
 		}
14 39
 
15
-		$this->bdd = new PDO("mysql:host=".$dbconnect["host"].";dbname=".$dbconnect["dbname"], $dbconnect["user"], $dbconnect["pass"]);
40
+		$this->bdd = new PDO("mysql:host=".$dbconnect["host"].";dbname="
41
+								.$dbconnect["dbname"], $dbconnect["user"], $dbconnect["pass"]);
16 42
 		$this->bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
17 43
 	}
18 44
 
19
-	/*
20
-		Exemple de $options :
21
-
22
-		$options = array(
23
-			"where" => array(
24
-				array("foo", "=", "bar"),
25
-				array("blbl", ">", 5)
26
-			),
27
-			"order by" => array("foo", "desc"),
28
-			"limit" => array(0, 10) // Ou array(10)
29
-		);
30
-	*/
45
+	/*****************************************************************************
46
+	*	Méthode Select()																													 *
47
+	*	Fonction : Effectue une insertion dans la base de données									 *
48
+	*																																						 *
49
+	* Paramètres :																															 *
50
+	* 	$fields (String) : Champs à sélectionner, séparés par une virgule				 *
51
+	*		$tables (String) : Tables dans lesquelles effectuer les champs, séparées *
52
+	*											 par une virgule																			 *
53
+	*		$options (Array (mixed)) : Tableau contenant les différentes clauses de  *
54
+	*		 (mixed : Array, String) | la requête.																	 *
55
+	*															 Exemple de tableau :													 *
56
+	*																$options = array(														 *
57
+	*																	"where" => array(													 *
58
+	*																		array("foo", "=", "bar"),								 *
59
+	*																		array("blbl", ">", 5)										 *
60
+	*																	),																				 *
61
+	*																	"order by" => array("foo", "desc"),				 *
62
+	*																	"limit" => array(0, 10) // Ou array(10)		 *
63
+	*																);																					 *
64
+	*											 Si cet argument n'est pas passé, la méthode s'exécute *
65
+	*											 avec un tableau vide.																 *
66
+	*																																						 *
67
+	*	Retour :																																	 *
68
+	*		Tableau contenant les résultats renvoyés par la base de données					 *
69
+	*		null si la requête a renvoyé un ensemble vide														 *
70
+	*																																						 *
71
+	*	Exceptions :																															 *
72
+	*		wrong_arg_nmbr_where : Nombre d'arguments insuffisant sur une partie de  *
73
+	*													 la clause WHERE																	 *
74
+	*		wrong_arg_nmbr_order_by : Nombre d'arguments insuffisant sur la clause   *
75
+	*															ORDER BY																			 *
76
+	*		wrong_arg_numbr_limit : Nombre d'arguments insuffisant sur la clause     *
77
+	*														LIMIT                                            *
78
+	*		unknown_arg : Le tableau contient une clause inconnue ou non supportée   *
79
+	*****************************************************************************/
31 80
 	function Select($fields, $tables, $options = array()) {
32 81
 		$request = "SELECT $fields FROM $tables ";
33 82
 		$arrayVerif = array();
@@ -76,6 +125,17 @@ class Connector {
76 125
 		}
77 126
 	}
78 127
 
128
+	/*****************************************************************************
129
+	*	Méthode Insert()																													 *
130
+	*	Fonction : Effectue une insertion dans la base de données									 *
131
+	*																																						 *
132
+	*	Paramètres :																															 *
133
+	* 	$table (String) : Table dans laquelle effectuer l'insertion							 *
134
+	*		$values (Array (String)) : Valeurs à insérer dans la table (tableau   	 *
135
+	*															 associatif)																	 *
136
+	*																																						 *
137
+	*	Retour : Aucun																														 *
138
+	*****************************************************************************/
79 139
 	function Insert($table, $values) {
80 140
 		$request = "INSERT INTO $table(";
81 141
 		$valeurs = "VALUES(";
@@ -93,6 +153,17 @@ class Connector {
93 153
 		$stmt->execute($arrayVerif);
94 154
 	}
95 155
 
156
+	/*****************************************************************************
157
+	*	Méthode Update()																													 *
158
+	*	Fonction : Modifie une ou plusieurs valeur(s) dans la base de données			 *
159
+	*																																						 *
160
+	*	Paramètres :																															 *
161
+	* 	$table (String) : Table dans laquelle effectuer la mise à jour					 *
162
+	*		$update (Array (mixed)) : Tableau contenant la (ou les)	valeur(s) à	  	 *
163
+	*  	 (mixed : Array, String)| modifier et la clause WHERE correspondante		 *
164
+	*																																						 *
165
+	*	Retour : Aucun																														 *
166
+	*****************************************************************************/
96 167
 	function Update($table, $update) {
97 168
 		$request = "UPDATE $table SET ";
98 169
 		$arrayVerif = array();
@@ -111,10 +182,27 @@ class Connector {
111 182
 		$stmt->execute($arrayVerif);
112 183
 	}
113 184
 
185
+	/*****************************************************************************
186
+	*	Méthode beginTransaction()																								 *
187
+	*	Fonction : Initie une transaction MySQL																		 *
188
+	*																																						 *
189
+	*	Paramètres : Aucun																												 *
190
+	*																																						 *
191
+	* Retour : Aucun																														 *
192
+	*****************************************************************************/
114 193
 	function beginTransaction() {
115 194
 		$this->bdd->beginTransaction();
116 195
 	}
117 196
 
197
+	/*****************************************************************************
198
+	*	Méthode commit()																								 					 *
199
+	*	Fonction : Publie les modifications sur le serveur MySQL et ferme la			 *
200
+	*						 transaction en cours																						 *
201
+	*																																						 *
202
+	*	Paramètres : Aucun																												 *
203
+	*																																						 *
204
+	* Retour : Aucun																														 *
205
+	*****************************************************************************/
118 206
 	function commit() {
119 207
 		$this->bdd->commit();
120 208
 	}

+ 35
- 16
web/api/model/class.question.php Просмотреть файл

@@ -1,11 +1,35 @@
1 1
 <?php
2 2
 
3
+/*******************************************************************************
4
+* Classe Question																														 *
5
+*	Auteur : Brendan Abolivier																									 *
6
+* Fonction : Créer un objet représentatif d'une question											 *
7
+*																																							 *
8
+*	Attribut :																																	 *
9
+*		$reponse1 : String																												 *
10
+*		$reponse2 : String																												 *
11
+*		$intitule : String																												 *
12
+*		$bonneReponse : Int																												 *
13
+*																																							 *
14
+* Méthodes :																																	 *
15
+*		__construct()																															 *
16
+*		getArray()																																 *
17
+*******************************************************************************/
3 18
 class Question {
4 19
 	private $reponse1;
5 20
 	private $reponse2;
6 21
 	private $intitule;
7 22
 	private $bonneReponse;
8 23
 
24
+	/*****************************************************************************
25
+	* Méthode __construct()                                                      *
26
+	*	Fonction : Constructeur, crée un objet Question à partir de son intitule   *
27
+	*																																						 *
28
+	*	Paramètres :																															 *
29
+	*		$intitule (String) : Intitulé de la question														 *
30
+	*																																						 *
31
+	*	Retour : Aucun																														 *
32
+	*****************************************************************************/
9 33
 	function __construct($intitule) {
10 34
 		try{
11 35
 			$this->intitule = $intitule;
@@ -21,28 +45,23 @@ class Question {
21 45
 
22 46
 			$this->reponse1 = $question[0]['reponse1'];
23 47
 			$this->reponse2 = $question[0]['reponse2'];
24
-			
48
+
25 49
 			$this->bonneReponse = $question[0]['num_reponse'];
26 50
 		} catch(Exception $e) {
27 51
 			throw $e;
28 52
 		}
29 53
 	}
30 54
 
31
-	function getIntitule() {
32
-		return $this->intitule;
33
-	}
34
-
35
-	function getReponses() {
36
-		return array(
37
-			"reponse1" => $this->reponse1,
38
-			"reponse2" => $this->reponse2
39
-		);
40
-	}
41
-
42
-	function getBonneReponse() {
43
-		return $this->bonneReponse;
44
-	}
45
-
55
+	/*****************************************************************************
56
+	* Méthode getArray()                                               		       *
57
+	*	Fonction : Renvoie un tableau associatif représentant l'objet courant  		 *
58
+	*																																						 *
59
+	*	Paramètres : Aucun																												 *
60
+	*																																						 *
61
+	*	Retour :																														 			 *
62
+	*		Tableau contenant l'intulé et un entier symbolisant la bonne réponse de	 *
63
+	*			la question																														 *
64
+	*****************************************************************************/
46 65
 	function getArray() {
47 66
 		return array(
48 67
 			"intitule" => utf8_encode($this->intitule),

+ 38
- 8
web/api/model/class.questset.php Просмотреть файл

@@ -1,10 +1,38 @@
1 1
 <?php
2 2
 
3
+/*******************************************************************************
4
+* Classe Questset																														 *
5
+*	Auteur : Brendan Abolivier																									 *
6
+* Fonction : Créer un objet représentatif d'un jeu de questions (thème)				 *
7
+*																																							 *
8
+*	Attribut :																																	 *
9
+*		$reponse1 : String																												 *
10
+*		$reponse2 : String																												 *
11
+*		$questions : Array (Question)																							 *
12
+*																																							 *
13
+* Méthodes :																																	 *
14
+*		__construct()																															 *
15
+*		getArray()																																 *
16
+*******************************************************************************/
3 17
 class Questset {
4 18
 	private $reponse1;
5 19
 	private $reponse2;
6 20
 	private $questions;
7 21
 
22
+	/*****************************************************************************
23
+	* Méthode __construct()                                                      *
24
+	*	Fonction : Constructeur, crée un objet Questset (thème) à partir de ses 	 *
25
+	*						 réponses   																										 *
26
+	*																																						 *
27
+	*	Paramètres :																															 *
28
+	*		$reponses (Array (String)) : Tableau associatif contenant les deux   		 *
29
+	*												 				 réponses du thème													 *
30
+	*																																						 *
31
+	*	Retour : Aucun																														 *
32
+	*																																						 *
33
+	*	Exceptions :																															 *
34
+	*		expected_questset_array : Le paramètre n'est pas un tableau							 *
35
+	*****************************************************************************/
8 36
 	function __construct($reponses) {
9 37
 		if(is_array($reponses)) {
10 38
 			$this->questions = array();
@@ -35,14 +63,16 @@ class Questset {
35 63
 		}
36 64
 	}
37 65
 
38
-	function getQuestions() {
39
-		return $this->questions;
40
-	}
41
-
42
-	function getLength() {
43
-		return sizeof($this->questions);
44
-	}
45
-
66
+	/*****************************************************************************
67
+	* Méthode getArray()                                               		       *
68
+	*	Fonction : Renvoie un tableau associatif représentant l'objet courant  		 *
69
+	*																																						 *
70
+	*	Paramètres : Aucun																												 *
71
+	*																																						 *
72
+	*	Retour :																														 			 *
73
+	*		Tableau contenant les deux réponses identifiant le thème ainsi qu'un		 *
74
+	*			tableau de questions (voir classe Question)														 *
75
+	*****************************************************************************/
46 76
 	function getArray() {
47 77
 		$questions = array();
48 78
 		foreach($this->questions as $question) {

+ 76
- 1
web/api/model/class.score.php Просмотреть файл

@@ -1,10 +1,36 @@
1 1
 <?php
2 2
 
3
+/*******************************************************************************
4
+* Classe Score									     																					 *
5
+*	Auteur : Brendan Abolivier																									 *
6
+* Fonction : Gérer l'affichage et l'insertion de scores 											 *
7
+*																																							 *
8
+*	Attribut :																																	 *
9
+*		$bdd : Connector																												   *
10
+*		$login : String																												 	   *
11
+*		$score : Int                 																							 *
12
+*																																							 *
13
+* Méthodes :																																	 *
14
+*		__construct()																															 *
15
+*		getLogin()																										             *
16
+*		getScore()																										             *
17
+*		getScores() [statique]																										 *
18
+*		add()	[statique]																													 *
19
+*******************************************************************************/
3 20
 class Score {
21
+  private $bdd;
4 22
   private $login;
5 23
   private $score;
6
-  private $bdd;
7 24
 
25
+  /*****************************************************************************
26
+	* Méthode __construct()                                                      *
27
+	*	Fonction : Charge un score d'après le login de son auteur            			 *
28
+	*																																						 *
29
+	*	Paramètres :																															 *
30
+	*		$login (String) : Login de l'auteur du score														 *
31
+	*																																						 *
32
+	*	Retour : Aucun																														 *
33
+	*****************************************************************************/
8 34
   function __construct($login) {
9 35
     $this->bdd = new Connector();
10 36
 
@@ -19,14 +45,49 @@ class Score {
19 45
     $this->score = $data[0]['score'];
20 46
   }
21 47
 
48
+
49
+  /*****************************************************************************
50
+  * Méthode getLogin()                                                         *
51
+  *	Fonction : Renvoie le login associé au score courant                			 *
52
+  *																																						 *
53
+  *	Paramètres : Aucun																												 *
54
+  *																																						 *
55
+  *	Retour :      																														 *
56
+  *   Chaîne de caractères contenant le login associé au score courant         *
57
+  *****************************************************************************/
22 58
   function getLogin() {
23 59
     return $this->login;
24 60
   }
25 61
 
62
+  /*****************************************************************************
63
+  * Méthode getScore()                                                         *
64
+  *	Fonction : Renvoie le score de l'objet courant                      			 *
65
+  *																																						 *
66
+  *	Paramètres : Aucun																												 *
67
+  *																																						 *
68
+  *	Retour :      																														 *
69
+  *   Entier contenant le score de l'objet courant                             *
70
+  *****************************************************************************/
26 71
   function getScore() {
27 72
     return $this->score;
28 73
   }
29 74
 
75
+  /*****************************************************************************
76
+  * Méthode getScores() [statique]                                             *
77
+  *	Fonction : Sélectionne un nombre donné dans les meilleurs ou les pires     *
78
+  *            scores                                                   			 *
79
+  *																																						 *
80
+  *	Paramètres :      																												 *
81
+  *   $nRows (Int) : Nombre de lignes à sélectionner (nombre de scores à       *
82
+  *                  retourner)                                                *
83
+  *   $direction (String) : Si vaut "desc", sélectionne par ordre décroissant  *
84
+  *                         (les n meilleurs scores) ; si vaut "asc",          *
85
+  *                         sélectionne par ordre croissant (les n pires       *
86
+  *                         scores)                                            *
87
+  *																																						 *
88
+  *	Retour :      																														 *
89
+  *   Tableau de n objets Score                                                *
90
+  *****************************************************************************/
30 91
   public static function getScores($nRows, $direction = "desc") {
31 92
     $bdd = new Connector();
32 93
 
@@ -44,6 +105,20 @@ class Score {
44 105
     return $scores;
45 106
   }
46 107
 
108
+  /*****************************************************************************
109
+  * Méthode add() [statique]                                                   *
110
+  *	Fonction : Ajoute un score dans la base de données                   			 *
111
+  *																																						 *
112
+  *	Paramètres :      																												 *
113
+  *   $login (String) : Login de l'auteur du score à ajouter                   *
114
+  *   $score (Int) : Score à ajouter                                           *
115
+  * 																																					 *
116
+  *	Retour : Aucun                                                             *
117
+  * 																																					 *
118
+  * Exceptions :                                                               *
119
+  *   higher_score_present : Un score supérieur existe déjà pour ce login dans *
120
+  *                          la base de données                                *
121
+  *****************************************************************************/
47 122
   public static function add($login, $score) {
48 123
     $bdd = new Connector();
49 124
 

+ 13
- 2
web/css/game.css Просмотреть файл

@@ -8,14 +8,25 @@
8 8
 	100%{width: 0;background-color: #cc5757;}
9 9
 }
10 10
 
11
-#timer
12
-{
11
+#timer {
13 12
 	height: 20px;
14 13
 	display: block;
15 14
 	margin: auto;
15
+}
16
+
17
+.timer
18
+{
16 19
 	animation: timebar 5s linear;
17 20
 }
18 21
 
22
+.pause {
23
+	animation-play-state: paused;
24
+}
25
+
26
+.clearTimer {
27
+	animation: none;
28
+}
29
+
19 30
 #navbar li.current:last-child #score {
20 31
   display:inline;
21 32
   padding-top:17px;

+ 0
- 123
web/css/game.css~ Просмотреть файл

@@ -1,123 +0,0 @@
1
-@keyframes timebar
2
-{
3
-	0%{width: 100%;background-color: #57cc6b;}
4
-	30%{background-color: #57cc6b;}
5
-	40%{background-color: #e3a55c;}
6
-	60%{background-color: #e3a55c;}
7
-	70%{background-color: #cc5757;}
8
-	100%{width: 0;background-color: #cc5757;}
9
-}
10
-
11
-#timer
12
-{
13
-	height: 20px;
14
-	display: block;
15
-	margin: auto;
16
-	animation: timebar 5s infinite linear;
17
-}
18
-
19
-#navbar li.current:last-child #score {
20
-  display:inline;
21
-  padding-top:17px;
22
-  padding-left:30px;
23
-  padding-right:30px;
24
-  padding-bottom:18px;
25
-  background: #ffab19;
26
-}
27
-
28
-#game input[type="submit"]#play {
29
-  border:none;
30
-  background-color:#09b22b;
31
-  color:white;
32
-  padding:20px;
33
-  font-size:170%;
34
-  cursor:pointer;
35
-}
36
-
37
-#game {
38
-  text-align:center;
39
-}
40
-
41
-div#category {
42
-  font-size:170%;
43
-  font-family:'Lato';
44
-  font-weight:300;
45
-  margin-top:20px;
46
-}
47
-
48
-p#question {
49
-  font-size:120%;
50
-}
51
-
52
-ul#answers {
53
-  padding-left:0px;
54
-}
55
-
56
-ul#answers li {
57
-  display:inline-block;
58
-  background: #b087ff;
59
-  width:16%;
60
-  padding:20px;
61
-  padding-top:38px;
62
-  height:42px;
63
-  font-size:110%;
64
-  color:white;
65
-  font-weight:bold;
66
-  margin-right:20px;
67
-  line-height: 20px;
68
-  vertical-align: middle;
69
-  cursor: pointer;
70
-}
71
-
72
-ul#answers li.good-answer {
73
-  background: #57cc6b;
74
-}
75
-
76
-ul#answers li.wrong-answer {
77
-  background: #cc5757;
78
-}
79
-
80
-h2#score {
81
-  margin-top: 100px;
82
-  font-size:220%;
83
-  margin-bottom:10px;
84
-}
85
-
86
-p#registerScore, p#conDenied {
87
-  width: 40%;
88
-  margin: auto;
89
-}
90
-
91
-p.success {
92
-  padding-top: 30px;
93
-  background:#57cc6b;
94
-  padding-bottom: 30px;
95
-}
96
-
97
-p.error {
98
-  padding-top: 30px;
99
-  background:#cc5757;
100
-  padding-bottom: 30px;
101
-  color:white;
102
-}
103
-
104
-p#conDenied {
105
-  margin-top:70px;
106
-}
107
-
108
-@media all and (max-width: 799px) {
109
-  ul#answers li {
110
-    display:block;
111
-    margin:auto;
112
-    margin-bottom:10px;
113
-    width:80%;
114
-    padding-top:15px;
115
-    height: 20px;
116
-  }
117
-}
118
-
119
-@media all and (min-width: 800px) {
120
-  ul#answers li:last-child {
121
-    margin-right:0px;
122
-  }
123
-}

+ 7
- 4
web/js/game.js Просмотреть файл

@@ -78,7 +78,7 @@ function loadCat(id) {
78 78
   if(id === 0) category = json.cat1;
79 79
   if(id === 1) category = json.cat2;
80 80
   console.log(category);
81
-  $("#game").html("<div id=\"timer\" style=\"width:100%;height:20px;background:green\"></div>");
81
+  $("#game").html("<div id=\"timer\"></div>");
82 82
   $("#game").append("<div id=\"category\">Catégorie : "+category.nom_cat+"</div>");
83 83
   $("#game").append("<div id=\"theme\"></div>");
84 84
   $(".current").html("<div id=\"score\">Score : "+score+" miam</div>");
@@ -173,15 +173,18 @@ function nextQuestion() {
173 173
 }
174 174
 
175 175
 function startTimer() {
176
-  $("#timer").css("width", "100%");
177 176
   baseWidth = $("#timer").width();
178
-  $("#timer").animate({'width' : '0%'}, timing*1000);
177
+  $("#timer").removeClass();
178
+  var elm = document.getElementById("timer"),
179
+      newone = elm.cloneNode(true);
180
+  elm.parentNode.replaceChild(newone, elm);
181
+  $("#timer").addClass("timer");
179 182
   timer = window.setTimeout(checkAnswer, timing*1000);
180 183
 }
181 184
 
182 185
 function stopTimer() {
183 186
   window.clearTimeout(timer);
184
-  $("#timer").stop();
187
+  $("#timer").addClass("pause");
185 188
   secRestantes = Math.round($("#timer").width()/baseWidth*timing);
186 189
 }
187 190
 

+ 6
- 3
web/js/multi.js Просмотреть файл

@@ -211,15 +211,18 @@ function play(questions) {
211 211
 }
212 212
 
213 213
 function startTimer() {
214
-  $("#timer").css("width", "100%");
215 214
   baseWidth = $("#timer").width();
216
-  $("#timer").animate({'width' : '0%'}, timing*1000);
215
+  $("#timer").removeClass();
216
+  var elm = document.getElementById("timer"),
217
+      newone = elm.cloneNode(true);
218
+  elm.parentNode.replaceChild(newone, elm);
219
+  $("#timer").addClass("timer");
217 220
   timer = window.setTimeout(checkAnswer, timing*1000);
218 221
 }
219 222
 
220 223
 function stopTimer() {
221 224
   window.clearTimeout(timer);
222
-  $("#timer").stop();
225
+  $("#timer").addClass("pause");
223 226
   secRestantes = Math.round($("#timer").width()/baseWidth*timing);
224 227
 }
225 228