Brendan Abolivier 9 år sedan
förälder
incheckning
e4719b5103

+ 1
- 1
web/api/controller/palmares.php Visa fil

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

+ 13
- 2
web/api/model/class.categorie.php Visa fil

@@ -22,7 +22,7 @@ class Categorie {
22 22
 		if(!is_null($this->bdd->Select('*', 'categorie', $options))) {
23 23
 			$this->nomCat = $nomCat;
24 24
 		} else {
25
-			throw new Exception('Catégorie introuvable');
25
+			throw new Exception('cant_find_cat');
26 26
 		}
27 27
 	}
28 28
 
@@ -49,9 +49,20 @@ class Categorie {
49 49
 		$previousIndex = -1;
50 50
 		for($i = 0; $i < 2; $i++) {
51 51
 			do {
52
+				$filled = true;
52 53
 				$previousIndex = $catIndex;
53 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 66
 			array_push($return, new Categorie($arrayCat[$catIndex]['nom_cat']));
56 67
 		}
57 68
 		return $return;

+ 7
- 4
web/api/model/class.connector.php Visa fil

@@ -33,12 +33,15 @@ class Connector {
33 33
 			if(($upName = strtoupper($name)) == "WHERE") {
34 34
 				$whereClause = " $upName ";
35 35
 				foreach($value as $array) {
36
-					if(sizeof($array) != 3) {
36
+					if(sizeof($array) != 3 && sizeof($array) != 4) {
37 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 46
 				$request .= substr($whereClause, 0, -5);
44 47
 			} else if(($upName = strtoupper($name)) == "ORDER BY") {

+ 1
- 1
web/api/model/class.questset.php Visa fil

@@ -31,7 +31,7 @@ class Questset {
31 31
 				throw $e;
32 32
 			}
33 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 Visa fil

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

+ 51
- 21
web/js/game.js Visa fil

@@ -8,6 +8,7 @@ var baseWidth;
8 8
 
9 9
 var score = 0;
10 10
 var reponseUser = -1, bonneReponse;
11
+var canClick = true;
11 12
 
12 13
 function apiReq() {
13 14
   $.ajax({
@@ -27,7 +28,7 @@ function loadCat(id) {
27 28
   $("#game").html("<p id=\"category\">Catégorie : "+category.nom_cat+"</p>");
28 29
   $("#game").append("<div id=\"theme\"></div>");
29 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 32
   loadTheme(id_theme);
32 33
 }
33 34
 
@@ -45,15 +46,21 @@ function quest(id) {
45 46
   bonneReponse = parseInt(theme.questions[id].bonneReponse);
46 47
   console.info('Question ' + (id_quest + 1) + '/' + theme.questions.length + ' : '
47 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 59
 function checkAnswer() {
60
+  canClick = false;
61
+  $("#rep1").off('click');
62
+  $("#rep2").off('click');
63
+  $("#both").off('click');
57 64
   stopTimer();
58 65
   if(reponseUser == bonneReponse) {
59 66
     score += secRestantes+1;
@@ -80,6 +87,7 @@ function nextQuestion() {
80 87
   $("#rep1").removeClass();
81 88
   $("#rep2").removeClass();
82 89
   $("#both").removeClass();
90
+  canClick = true;
83 91
   // Dernière question du thème en cours
84 92
   if((id_quest+1) == theme.questions.length)  {
85 93
     // Dernier thème de la catégorie en cours
@@ -127,27 +135,49 @@ function endGame() {
127 135
   $("#game").html("<h2 id=\"score\">Vous avez marqué "+score+" miams</h2>"
128 136
   +"<p id=\"registerScore\">Enregistrez votre score : <input type=\"text\" id=\"login\" placeholder=\"Nom ou pseudonyme\" />"
129 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 153
       $("#registerScore").addClass("success");
137 154
       $("#registerScore").html("Votre score a bien été enregistré<br />"+
138 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 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 175
         $("#registerScore").html("Une erreur est survenue ("+status.message+")<br />"+
146 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 183
 function addScore(userLogin, userScore) {

+ 1
- 1
web/multi/client/index.html Visa fil

@@ -21,7 +21,7 @@
21 21
         </div>
22 22
 
23 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 25
         <script src="js/game.js"></script>
26 26
         <script>
27 27
             init();

+ 25
- 10
web/multi/client/js/game.js Visa fil

@@ -15,7 +15,7 @@ var pseudo ='';
15 15
 function init() {
16 16
 
17 17
     // Connexion à socket.io
18
-    socket = io.connect('http://localhost:8000');
18
+    socket = io.connect('http://172.17.7.66:8000');
19 19
 
20 20
     // Gestion des evenements
21 21
     setEventHandlers();
@@ -28,6 +28,14 @@ function init() {
28 28
       document.title = $("#pseudo").val() + ' - ' + document.title;
29 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,6 +86,7 @@ var baseWidth;
78 86
 
79 87
 var score = 0;
80 88
 var reponseUser = -1, bonneReponse;
89
+var canClick = true;
81 90
 
82 91
 function apiReq() {
83 92
   $.ajax({
@@ -115,15 +124,21 @@ function quest(id) {
115 124
   bonneReponse = parseInt(theme.questions[id].bonneReponse);
116 125
   console.info('Question ' + (id_quest + 1) + '/' + theme.questions.length + ' : '
117 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 137
 function checkAnswer() {
138
+  canClick = false;
139
+  $("#rep1").off('click');
140
+  $("#rep2").off('click');
141
+  $("#both").off('click');
127 142
   stopTimer();
128 143
   if(reponseUser == bonneReponse) {
129 144
     score += secRestantes+1;
@@ -150,8 +165,8 @@ function nextQuestion() {
150 165
   $("#rep1").removeClass();
151 166
   $("#rep2").removeClass();
152 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 170
   if((id_quest+1) == theme.questions.length)  {
156 171
     // Dernier thème de la catégorie en cours
157 172
     if((id_theme+1) == category.themes.length) {
@@ -172,7 +187,7 @@ function nextQuestion() {
172 187
   } else {
173 188
     id_quest++;
174 189
     quest(id_quest);
175
-  }*/
190
+  }
176 191
 }
177 192
 
178 193
 function play(questions) {

+ 2
- 2
web/multi/server/server.js Visa fil

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

+ 10
- 0
web/test.php Visa fil

@@ -0,0 +1,10 @@
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);