Brendan Abolivier пре 9 година
родитељ
комит
1e48e0b97f
4 измењених фајлова са 87 додато и 45 уклоњено
  1. BIN
      java/rsc/burgerquizz.png
  2. 1
    0
      web/multi/client/index.html
  3. 40
    25
      web/multi/client/js/game.js
  4. 46
    20
      web/multi/server/server.js

BIN
java/rsc/burgerquizz.png Прегледај датотеку


+ 1
- 0
web/multi/client/index.html Прегледај датотеку

17
         <h1>Burger temps réel !</h1>
17
         <h1>Burger temps réel !</h1>
18
 
18
 
19
         <div id="game">
19
         <div id="game">
20
+          Connexion au serveur...
20
         </div>
21
         </div>
21
 
22
 
22
         <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>

+ 40
- 25
web/multi/client/js/game.js Прегледај датотеку

7
 /**************************************************
7
 /**************************************************
8
 ** GAME INITIALISATION
8
 ** GAME INITIALISATION
9
 **************************************************/
9
 **************************************************/
10
+
11
+var disconnect = true;
12
+var scoreAdversaire = 0;
13
+var pseudo ='';
14
+
10
 function init() {
15
 function init() {
11
 
16
 
12
     // Connexion à socket.io
17
     // Connexion à socket.io
18
     // On demande le pseudo a l'utilisateur, on l'envoie au serveur et on l'affiche dans le titre
23
     // On demande le pseudo a l'utilisateur, on l'envoie au serveur et on l'affiche dans le titre
19
     $("#game").html("<input type=\"text\" id=\"pseudo\" /><input type=\"submit\" id=\"start\" value=\"Valider\" />");
24
     $("#game").html("<input type=\"text\" id=\"pseudo\" /><input type=\"submit\" id=\"start\" value=\"Valider\" />");
20
     $("#start").on("click", function() {
25
     $("#start").on("click", function() {
21
-      socket.emit('nouveau', $("#pseudo").val());
26
+      pseudo = $("#pseudo").val();
27
+      socket.emit('nouveau', pseudo);
22
       document.title = $("#pseudo").val() + ' - ' + document.title;
28
       document.title = $("#pseudo").val() + ' - ' + document.title;
23
       $("#game").html("Recherche d'un adversare...");
29
       $("#game").html("Recherche d'un adversare...");
24
     });
30
     });
32
 	socket.on("autres", onAutres);
38
 	socket.on("autres", onAutres);
33
   socket.on("game", onGame);
39
   socket.on("game", onGame);
34
   socket.on("questions", play);
40
   socket.on("questions", play);
41
+  socket.on("lolheded", endGame);
42
+  socket.on("end", onEnd);
35
 };
43
 };
36
 
44
 
45
+function onEnd(score) {
46
+  disconnect = false;
47
+  scoreAdversaire = score;
48
+  endGame();
49
+}
50
+
37
 function onGame(game) {
51
 function onGame(game) {
38
   gameInfos = game;
52
   gameInfos = game;
39
   $("#game").html("Adversaire trouvé : "+game[0]+"<br />Début de la partie dans 5s.");
53
   $("#game").html("Adversaire trouvé : "+game[0]+"<br />Début de la partie dans 5s.");
136
   $("#rep1").removeClass();
150
   $("#rep1").removeClass();
137
   $("#rep2").removeClass();
151
   $("#rep2").removeClass();
138
   $("#both").removeClass();
152
   $("#both").removeClass();
139
-  // Dernière question du thème en cours
153
+  pauseGame();
154
+  /*// Dernière question du thème en cours
140
   if((id_quest+1) == theme.questions.length)  {
155
   if((id_quest+1) == theme.questions.length)  {
141
     // Dernier thème de la catégorie en cours
156
     // Dernier thème de la catégorie en cours
142
     if((id_theme+1) == category.themes.length) {
157
     if((id_theme+1) == category.themes.length) {
143
       // Dernière catégorie
158
       // Dernière catégorie
144
       if((id_cat+1) == 2) {
159
       if((id_cat+1) == 2) {
145
-        endGame();
160
+        pauseGame();
146
       } else {
161
       } else {
147
         id_quest = 0;
162
         id_quest = 0;
148
         id_theme = 0;
163
         id_theme = 0;
157
   } else {
172
   } else {
158
     id_quest++;
173
     id_quest++;
159
     quest(id_quest);
174
     quest(id_quest);
160
-  }
175
+  }*/
161
 }
176
 }
162
 
177
 
163
 function play(questions) {
178
 function play(questions) {
179
   secRestantes = Math.round($("#timer").width()/baseWidth*timing);
194
   secRestantes = Math.round($("#timer").width()/baseWidth*timing);
180
 }
195
 }
181
 
196
 
197
+function pauseGame() {
198
+  $("#game").html("<h2 id=\"score\">Vous avez marqué "+score+" miams</h2>"
199
+  +"<p id=\"registerScore\">En attente de l'adversaire...</p>");
200
+  // On indique au serveur qu'on a fini
201
+  var options = [gameInfos[1], score];
202
+  socket.emit('findugame', options);
203
+}
204
+
182
 function endGame() {
205
 function endGame() {
206
+  stopTimer();
183
   $("#game").html("<h2 id=\"score\">Vous avez marqué "+score+" miams</h2>"
207
   $("#game").html("<h2 id=\"score\">Vous avez marqué "+score+" miams</h2>"
184
-  +"<p id=\"registerScore\">Enregistrez votre score : <input type=\"text\" id=\"login\" placeholder=\"Nom ou pseudonyme\" />"
185
-  +"<input type=\"submit\" id=\"sendScore\" value=\"Valider\" /></p>");
186
-  $("#sendScore").click(function() {
187
-    addScore($("#login").val(), score);
188
-    var message = json.message;
189
-    $("#registerScore").fadeOut();
190
-    console.log(message);
191
-    if(message == "score_add_success") {
192
-      $("#registerScore").addClass("success");
193
-      $("#registerScore").html("Votre score a bien été enregistré<br />"+
194
-      "<a href=\"palmares.htm\">Voir les meilleurs scores</a>");
208
+  +"<p id=\"registerScore\">");
209
+  if(disconnect) {
210
+    $("#game").append(gameInfos[0]+" s'est déconnecté.");
211
+  } else {
212
+    $("#game").append("Votre adversaire a marqué "+scoreAdversaire+" miams.<br />Le gagnant est... ");
213
+    if(score > scoreAdversaire) {
214
+      $("#game").append(pseudo+" (vous).");
215
+    } else if(score < scoreAdversaire) {
216
+      $("#game").append(gameInfos[0]+".");
195
     } else {
217
     } else {
196
-      $("#registerScore").addClass("error");
197
-      if(message === "higher_score_present") {
198
-        $("#registerScore").html("Un score supérieur ou égal existe déjà avec ce pseudonyme<br />"+
199
-        "<a href=\"palmares.htm\">Voir les meilleurs scores</a>");
200
-      } else {
201
-        $("#registerScore").html("Une erreur est survenue ("+status.message+")<br />"+
202
-        "<a href=\"palmares.htm\">Voir les meilleurs scores</a>");
203
-      }
218
+      $("#game").append("personne (égalité).");
204
     }
219
     }
205
-    $("#registerScore").fadeIn();
206
-  });
220
+  }
221
+  $("#game").append("</p>");
207
 }
222
 }
208
 
223
 
209
 function addScore(userLogin, userScore) {
224
 function addScore(userLogin, userScore) {

+ 46
- 20
web/multi/server/server.js Прегледај датотеку

15
     server.sockets.on("connection", onSocketConnection);
15
     server.sockets.on("connection", onSocketConnection);
16
 };
16
 };
17
 
17
 
18
-
19
-function apiReq() {
20
-  http.get("http://localhost/burger-quizz/web/api/", function(res) {
21
-    var data = "";
22
-    res.on("data", function(returned) {
23
-      data += returned;
24
-    })
25
-    res.on("end", function() {
26
-      json = JSON.parse(data.toString());
27
-    })
28
-  });
29
-}
30
 // Fonction prenant en paramètre le client (voir ci-dessus)
18
 // Fonction prenant en paramètre le client (voir ci-dessus)
31
 // Réception ou envoi d'évènement à partir de cet objet : client
19
 // Réception ou envoi d'évènement à partir de cet objet : client
32
 function onSocketConnection(client) {
20
 function onSocketConnection(client) {
40
         //client.emit('message', 'bien reçu !!');
28
         //client.emit('message', 'bien reçu !!');
41
 
29
 
42
         if(lobby.length > 0) {
30
         if(lobby.length > 0) {
43
-          games.push({joueur1: lobby[0], joueur2: {login: pseudo, socket: client}, idGame: games.length, json: ''});
31
+          games.push({joueur1: lobby[0], joueur2: {login: pseudo, socket: client, over: false, score: 0}, idGame: games.length, json: ''});
44
           games[games.length-1].joueur1.socket.emit("game", [games[games.length-1].joueur2.login, games[games.length-1].idGame]);
32
           games[games.length-1].joueur1.socket.emit("game", [games[games.length-1].joueur2.login, games[games.length-1].idGame]);
45
           games[games.length-1].joueur2.socket.emit("game", [games[games.length-1].joueur1.login, games[games.length-1].idGame]);
33
           games[games.length-1].joueur2.socket.emit("game", [games[games.length-1].joueur1.login, games[games.length-1].idGame]);
46
           lobby = [];
34
           lobby = [];
47
         } else {
35
         } else {
48
-          lobby.push({login: pseudo, socket: client});
36
+          lobby.push({login: pseudo, socket: client, over: false, score: 0});
49
         }
37
         }
50
         // Envoi d'un message aux autres clients connectés
38
         // Envoi d'un message aux autres clients connectés
51
         //client.broadcast.emit('autres', pseudo);
39
         //client.broadcast.emit('autres', pseudo);
54
       console.log(err);
42
       console.log(err);
55
     });
43
     });
56
     client.on('start', function(gameID) {
44
     client.on('start', function(gameID) {
57
-      if(!games[gameID].json) {
58
-        console.log("slt");
59
-        apiReq();
60
-        games[gameID].json = json;
45
+      http.get("http://localhost/burger-quizz/web/api/", function(res) {
46
+        var data = "";
47
+        res.on("data", function(returned) {
48
+          data += returned;
49
+        })
50
+        res.on("error", function(err) {
51
+          console.log(err);
52
+        });
53
+        res.on("end", function() {
54
+          if(!games[gameID].json) {
55
+            games[gameID].json = JSON.parse(data.toString());
56
+          }
57
+          client.emit('questions', games[gameID].json);
58
+        })
59
+      });
60
+    });
61
+
62
+    client.on('findugame', function(options) {
63
+      if(games[options[0]].joueur1.socket.id === client.id) {
64
+        games[options[0]].joueur1.over = true;
65
+        games[options[0]].joueur1.score = options[1];
66
+        console.log("Joueur 1 ("+games[options[0]].joueur1.login+") a fini.");
67
+      } else if(games[options[0]].joueur2.socket.id === client.id) {
68
+        games[options[0]].joueur2.over = true;
69
+        games[options[0]].joueur2.score = options[1];
70
+        console.log("Joueur 2 ("+games[options[0]].joueur2.login+") a fini.");
71
+      }
72
+      if(games[options[0]].joueur1.over && games[options[0]].joueur2.over) {
73
+        console.log("Partie terminée.");
74
+        games[options[0]].joueur1.socket.emit('end', games[options[0]].joueur2.score);
75
+        games[options[0]].joueur2.socket.emit('end', games[options[0]].joueur1.score);
76
+        games.splice(options[0], 1);
77
+        console.log(games);
61
       }
78
       }
62
-      console.log(json);
63
-      client.emit('questions', games[gameID].json);
64
     });
79
     });
65
 
80
 
81
+    client.on('disconnect', function() {
82
+      console.log("Joueur déconnecté.");
83
+      console.log(client.id);
84
+      games.forEach(function(row) {
85
+        if(row.joueur1.socket.id === client.id) {
86
+          row.joueur2.socket.emit('lolheded');
87
+        } else if(row.joueur2.socket.id === client.id) {
88
+          row.joueur1.socket.emit('lolheded');
89
+        }
90
+      });
91
+    })
66
 };
92
 };
67
 
93
 
68
 // Initialisation
94
 // Initialisation