Browse Source

bugfixing

Brendan Abolivier 9 years ago
parent
commit
e4719b5103

+ 1
- 1
web/api/controller/palmares.php View File

1
 <?php
1
 <?php
2
 
2
 
3
-if(!empty($_POST['login']) && !empty($_POST['score'])) {
3
+if(!empty($_POST['login']) && isset($_POST['score'])) {
4
 	Score::add($_POST['login'], $_POST['score']);
4
 	Score::add($_POST['login'], $_POST['score']);
5
 	$scArray = array(
5
 	$scArray = array(
6
 		"status" => 1,
6
 		"status" => 1,

+ 13
- 2
web/api/model/class.categorie.php View File

22
 		if(!is_null($this->bdd->Select('*', 'categorie', $options))) {
22
 		if(!is_null($this->bdd->Select('*', 'categorie', $options))) {
23
 			$this->nomCat = $nomCat;
23
 			$this->nomCat = $nomCat;
24
 		} else {
24
 		} else {
25
-			throw new Exception('Catégorie introuvable');
25
+			throw new Exception('cant_find_cat');
26
 		}
26
 		}
27
 	}
27
 	}
28
 
28
 
49
 		$previousIndex = -1;
49
 		$previousIndex = -1;
50
 		for($i = 0; $i < 2; $i++) {
50
 		for($i = 0; $i < 2; $i++) {
51
 			do {
51
 			do {
52
+				$filled = true;
52
 				$previousIndex = $catIndex;
53
 				$previousIndex = $catIndex;
53
 				$catIndex = rand(0, sizeof($arrayCat)-1);
54
 				$catIndex = rand(0, sizeof($arrayCat)-1);
54
-			} while($catIndex == $previousIndex);
55
+				$category = new Categorie($arrayCat[$catIndex]['nom_cat']);
56
+				if(sizeof($category->getArray()['themes']) >=2) {
57
+					foreach($category->getArray()['themes'] as $theme) {
58
+						if(sizeof($theme['questions']) < 3) {
59
+							$filled = false;
60
+						}
61
+					}
62
+				} else {
63
+					$filled = false;
64
+				}
65
+			} while(($catIndex == $previousIndex) || !$filled);
55
 			array_push($return, new Categorie($arrayCat[$catIndex]['nom_cat']));
66
 			array_push($return, new Categorie($arrayCat[$catIndex]['nom_cat']));
56
 		}
67
 		}
57
 		return $return;
68
 		return $return;

+ 7
- 4
web/api/model/class.connector.php View File

33
 			if(($upName = strtoupper($name)) == "WHERE") {
33
 			if(($upName = strtoupper($name)) == "WHERE") {
34
 				$whereClause = " $upName ";
34
 				$whereClause = " $upName ";
35
 				foreach($value as $array) {
35
 				foreach($value as $array) {
36
-					if(sizeof($array) != 3) {
36
+					if(sizeof($array) != 3 && sizeof($array) != 4) {
37
 						throw new Exception('wrong_arg_nmbr_where');
37
 						throw new Exception('wrong_arg_nmbr_where');
38
 					}
38
 					}
39
-
40
-					$whereClause .= $array[0]." ".$array[1]." :".$array[0]." AND ";
41
-					$arrayVerif[":".$array[0]] = $array[2];
39
+					if(sizeof($array) == 3) {
40
+						$whereClause .= $array[0]." ".$array[1]." ? AND ";
41
+						array_push($arrayVerif, $array[2]);
42
+					} else {
43
+						$whereClause .= $array[0]." ".$array[1]." ".$array[2]." AND ";
44
+					}
42
 				}
45
 				}
43
 				$request .= substr($whereClause, 0, -5);
46
 				$request .= substr($whereClause, 0, -5);
44
 			} else if(($upName = strtoupper($name)) == "ORDER BY") {
47
 			} else if(($upName = strtoupper($name)) == "ORDER BY") {

+ 1
- 1
web/api/model/class.questset.php View File

31
 				throw $e;
31
 				throw $e;
32
 			}
32
 			}
33
 		} else {
33
 		} else {
34
-			throw new Exception('Un tableau de réponses est attendu dans le constructeur.');
34
+			throw new Exception('expected_questset_array');
35
 		}
35
 		}
36
 	}
36
 	}
37
 
37
 

+ 0
- 5
web/api/tests.php View File

1
-<?php
2
-
3
-require_once('model/classes.php');
4
-
5
-Score::add("Yolo", 200);

+ 51
- 21
web/js/game.js View File

8
 
8
 
9
 var score = 0;
9
 var score = 0;
10
 var reponseUser = -1, bonneReponse;
10
 var reponseUser = -1, bonneReponse;
11
+var canClick = true;
11
 
12
 
12
 function apiReq() {
13
 function apiReq() {
13
   $.ajax({
14
   $.ajax({
27
   $("#game").html("<p id=\"category\">Catégorie : "+category.nom_cat+"</p>");
28
   $("#game").html("<p id=\"category\">Catégorie : "+category.nom_cat+"</p>");
28
   $("#game").append("<div id=\"theme\"></div>");
29
   $("#game").append("<div id=\"theme\"></div>");
29
   $("#game").append("<div id=\"timer\" style=\"width:100%;height:20px;background:green\"></div>");
30
   $("#game").append("<div id=\"timer\" style=\"width:100%;height:20px;background:green\"></div>");
30
-  $("#game").append("<div id=\"score\"></div>");
31
+  $("#game").append("<div id=\"score\">Score : "+score+"</div>");
31
   loadTheme(id_theme);
32
   loadTheme(id_theme);
32
 }
33
 }
33
 
34
 
45
   bonneReponse = parseInt(theme.questions[id].bonneReponse);
46
   bonneReponse = parseInt(theme.questions[id].bonneReponse);
46
   console.info('Question ' + (id_quest + 1) + '/' + theme.questions.length + ' : '
47
   console.info('Question ' + (id_quest + 1) + '/' + theme.questions.length + ' : '
47
     +theme.questions[id].intitule);
48
     +theme.questions[id].intitule);
48
-  $("#rep1").off('click');
49
-  $("#rep1").on("click", function() { reponseUser = 1; checkAnswer(); });
50
-  $("#rep2").off('click');
51
-  $("#rep2").on("click", function() { reponseUser = 2; checkAnswer(); });
52
-  $("#both").off('click');
53
-  $("#both").on("click", function() { reponseUser = 0; checkAnswer(); });
49
+  if(canClick) {
50
+    $("#rep1").off('click');
51
+    $("#rep1").one("click", function() { reponseUser = 1; checkAnswer(); });
52
+    $("#rep2").off('click');
53
+    $("#rep2").one("click", function() { reponseUser = 2; checkAnswer(); });
54
+    $("#both").off('click');
55
+    $("#both").one("click", function() { reponseUser = 0; checkAnswer(); });
56
+  }
54
 }
57
 }
55
 
58
 
56
 function checkAnswer() {
59
 function checkAnswer() {
60
+  canClick = false;
61
+  $("#rep1").off('click');
62
+  $("#rep2").off('click');
63
+  $("#both").off('click');
57
   stopTimer();
64
   stopTimer();
58
   if(reponseUser == bonneReponse) {
65
   if(reponseUser == bonneReponse) {
59
     score += secRestantes+1;
66
     score += secRestantes+1;
80
   $("#rep1").removeClass();
87
   $("#rep1").removeClass();
81
   $("#rep2").removeClass();
88
   $("#rep2").removeClass();
82
   $("#both").removeClass();
89
   $("#both").removeClass();
90
+  canClick = true;
83
   // Dernière question du thème en cours
91
   // Dernière question du thème en cours
84
   if((id_quest+1) == theme.questions.length)  {
92
   if((id_quest+1) == theme.questions.length)  {
85
     // Dernier thème de la catégorie en cours
93
     // Dernier thème de la catégorie en cours
127
   $("#game").html("<h2 id=\"score\">Vous avez marqué "+score+" miams</h2>"
135
   $("#game").html("<h2 id=\"score\">Vous avez marqué "+score+" miams</h2>"
128
   +"<p id=\"registerScore\">Enregistrez votre score : <input type=\"text\" id=\"login\" placeholder=\"Nom ou pseudonyme\" />"
136
   +"<p id=\"registerScore\">Enregistrez votre score : <input type=\"text\" id=\"login\" placeholder=\"Nom ou pseudonyme\" />"
129
   +"<input type=\"submit\" id=\"sendScore\" value=\"Valider\" /></p>");
137
   +"<input type=\"submit\" id=\"sendScore\" value=\"Valider\" /></p>");
130
-  $("#sendScore").click(function() {
131
-    addScore($("#login").val(), score);
132
-    var message = json.message;
133
-    $("#registerScore").fadeOut();
134
-    console.log(message);
135
-    if(message == "score_add_success") {
138
+  $("#sendScore").on('click', scoreConfirm);
139
+  $("#login").on('keypress', function(event) {
140
+    if(event.which == 13) {
141
+      scoreConfirm();
142
+    }
143
+  });
144
+}
145
+
146
+function scoreConfirm() {
147
+  addScore($("#login").val(), score);
148
+  var message = json.message;
149
+  $("#registerScore").fadeOut();
150
+  console.log(message);
151
+  if(message == "score_add_success") {
152
+    window.setTimeout(function() {
136
       $("#registerScore").addClass("success");
153
       $("#registerScore").addClass("success");
137
       $("#registerScore").html("Votre score a bien été enregistré<br />"+
154
       $("#registerScore").html("Votre score a bien été enregistré<br />"+
138
       "<a href=\"palmares.htm\">Voir les meilleurs scores</a>");
155
       "<a href=\"palmares.htm\">Voir les meilleurs scores</a>");
156
+    }, 400);
157
+  } else {
158
+    if(message === "higher_score_present") {
159
+      window.setTimeout(function() {
160
+        $("#registerScore").addClass("error");
161
+        $("#registerScore").html("Un score supérieur ou égal existe déjà avec ce pseudonyme<br />"
162
+        +"Essayez avec un autre pseudonyme : <input type=\"text\" id=\"login\" placeholder=\"Nom ou pseudonyme\" />"
163
+        +"<input type=\"submit\" id=\"sendScore\" value=\"Valider\" /><br />"
164
+        +"<a href=\"palmares.htm\">Voir les meilleurs scores</a>");
165
+      }, 400);
166
+      $("#sendScore").on('click', scoreConfirm);
167
+      $("#login").on('keypress', function(event) {
168
+        if(event.which == 13) {
169
+          scoreConfirm();
170
+        }
171
+      });
139
     } else {
172
     } else {
140
-      $("#registerScore").addClass("error");
141
-      if(message === "higher_score_present") {
142
-        $("#registerScore").html("Un score supérieur ou égal existe déjà avec ce pseudonyme<br />"+
143
-        "<a href=\"palmares.htm\">Voir les meilleurs scores</a>");
144
-      } else {
173
+      window.setTimeout(function() {
174
+        $("#registerScore").addClass("error");
145
         $("#registerScore").html("Une erreur est survenue ("+status.message+")<br />"+
175
         $("#registerScore").html("Une erreur est survenue ("+status.message+")<br />"+
146
         "<a href=\"palmares.htm\">Voir les meilleurs scores</a>");
176
         "<a href=\"palmares.htm\">Voir les meilleurs scores</a>");
147
-      }
177
+      }, 400);
148
     }
178
     }
149
-    $("#registerScore").fadeIn();
150
-  });
179
+  }
180
+  $("#registerScore").fadeIn();
151
 }
181
 }
152
 
182
 
153
 function addScore(userLogin, userScore) {
183
 function addScore(userLogin, userScore) {

+ 1
- 1
web/multi/client/index.html View File

21
         </div>
21
         </div>
22
 
22
 
23
         <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
23
         <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
24
-        <script src="http://localhost:8000/socket.io/socket.io.js"></script>
24
+        <script src="http://172.17.7.66:8000/socket.io/socket.io.js"></script>
25
         <script src="js/game.js"></script>
25
         <script src="js/game.js"></script>
26
         <script>
26
         <script>
27
             init();
27
             init();

+ 25
- 10
web/multi/client/js/game.js View File

15
 function init() {
15
 function init() {
16
 
16
 
17
     // Connexion à socket.io
17
     // Connexion à socket.io
18
-    socket = io.connect('http://localhost:8000');
18
+    socket = io.connect('http://172.17.7.66:8000');
19
 
19
 
20
     // Gestion des evenements
20
     // Gestion des evenements
21
     setEventHandlers();
21
     setEventHandlers();
28
       document.title = $("#pseudo").val() + ' - ' + document.title;
28
       document.title = $("#pseudo").val() + ' - ' + document.title;
29
       $("#game").html("Recherche d'un adversare...");
29
       $("#game").html("Recherche d'un adversare...");
30
     });
30
     });
31
+    $("#pseudo").on('keypress', function(event) {
32
+      if(event.which == 13) {
33
+        pseudo = $("#pseudo").val();
34
+        socket.emit('nouveau', pseudo);
35
+        document.title = $("#pseudo").val() + ' - ' + document.title;
36
+        $("#game").html("Recherche d'un adversare...");
37
+      }
38
+    });
31
 };
39
 };
32
 
40
 
33
 /**************************************************
41
 /**************************************************
78
 
86
 
79
 var score = 0;
87
 var score = 0;
80
 var reponseUser = -1, bonneReponse;
88
 var reponseUser = -1, bonneReponse;
89
+var canClick = true;
81
 
90
 
82
 function apiReq() {
91
 function apiReq() {
83
   $.ajax({
92
   $.ajax({
115
   bonneReponse = parseInt(theme.questions[id].bonneReponse);
124
   bonneReponse = parseInt(theme.questions[id].bonneReponse);
116
   console.info('Question ' + (id_quest + 1) + '/' + theme.questions.length + ' : '
125
   console.info('Question ' + (id_quest + 1) + '/' + theme.questions.length + ' : '
117
     +theme.questions[id].intitule);
126
     +theme.questions[id].intitule);
118
-  $("#rep1").off('click');
119
-  $("#rep1").on("click", function() { reponseUser = 1; checkAnswer(); });
120
-  $("#rep2").off('click');
121
-  $("#rep2").on("click", function() { reponseUser = 2; checkAnswer(); });
122
-  $("#both").off('click');
123
-  $("#both").on("click", function() { reponseUser = 0; checkAnswer(); });
127
+  if(canClick) {
128
+    $("#rep1").off('click');
129
+    $("#rep1").one("click", function() { reponseUser = 1; checkAnswer(); });
130
+    $("#rep2").off('click');
131
+    $("#rep2").one("click", function() { reponseUser = 2; checkAnswer(); });
132
+    $("#both").off('click');
133
+    $("#both").one("click", function() { reponseUser = 0; checkAnswer(); });
134
+  }
124
 }
135
 }
125
 
136
 
126
 function checkAnswer() {
137
 function checkAnswer() {
138
+  canClick = false;
139
+  $("#rep1").off('click');
140
+  $("#rep2").off('click');
141
+  $("#both").off('click');
127
   stopTimer();
142
   stopTimer();
128
   if(reponseUser == bonneReponse) {
143
   if(reponseUser == bonneReponse) {
129
     score += secRestantes+1;
144
     score += secRestantes+1;
150
   $("#rep1").removeClass();
165
   $("#rep1").removeClass();
151
   $("#rep2").removeClass();
166
   $("#rep2").removeClass();
152
   $("#both").removeClass();
167
   $("#both").removeClass();
153
-  pauseGame();
154
-  /*// Dernière question du thème en cours
168
+  canClick = true;
169
+  // Dernière question du thème en cours
155
   if((id_quest+1) == theme.questions.length)  {
170
   if((id_quest+1) == theme.questions.length)  {
156
     // Dernier thème de la catégorie en cours
171
     // Dernier thème de la catégorie en cours
157
     if((id_theme+1) == category.themes.length) {
172
     if((id_theme+1) == category.themes.length) {
172
   } else {
187
   } else {
173
     id_quest++;
188
     id_quest++;
174
     quest(id_quest);
189
     quest(id_quest);
175
-  }*/
190
+  }
176
 }
191
 }
177
 
192
 
178
 function play(questions) {
193
 function play(questions) {

+ 2
- 2
web/multi/server/server.js View File

79
     });
79
     });
80
 
80
 
81
     client.on('disconnect', function() {
81
     client.on('disconnect', function() {
82
-      console.log("Joueur déconnecté.");
83
-      console.log(client.id);
84
       games.forEach(function(row) {
82
       games.forEach(function(row) {
85
         if(row.joueur1.socket.id === client.id) {
83
         if(row.joueur1.socket.id === client.id) {
84
+          console.log("Joueur déconnecté ("+row.joueur1.login+") ; socket id : "+client.id);
86
           row.joueur2.socket.emit('lolheded');
85
           row.joueur2.socket.emit('lolheded');
87
         } else if(row.joueur2.socket.id === client.id) {
86
         } else if(row.joueur2.socket.id === client.id) {
87
+          console.log("Joueur déconnecté ("+row.joueur2.login+") ; socket id : "+client.id);
88
           row.joueur1.socket.emit('lolheded');
88
           row.joueur1.socket.emit('lolheded');
89
         }
89
         }
90
       });
90
       });

+ 10
- 0
web/test.php View File

1
+<?php
2
+header("Content-Type:application/json");
3
+
4
+$array = array(
5
+  "numéro" => 2,
6
+  "lettre" => "a",
7
+  "string" => "qqfssdfq"
8
+);
9
+
10
+echo json_encode($array);