Brendan Abolivier 9 年 前
コミット
1e48e0b97f
共有4 個のファイルを変更した87 個の追加45 個の削除を含む
  1. バイナリ
      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

バイナリ
java/rsc/burgerquizz.png ファイルの表示


+ 1
- 0
web/multi/client/index.html ファイルの表示

@@ -17,6 +17,7 @@
17 17
         <h1>Burger temps réel !</h1>
18 18
 
19 19
         <div id="game">
20
+          Connexion au serveur...
20 21
         </div>
21 22
 
22 23
         <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>

+ 40
- 25
web/multi/client/js/game.js ファイルの表示

@@ -7,6 +7,11 @@ var gameInfos;
7 7
 /**************************************************
8 8
 ** GAME INITIALISATION
9 9
 **************************************************/
10
+
11
+var disconnect = true;
12
+var scoreAdversaire = 0;
13
+var pseudo ='';
14
+
10 15
 function init() {
11 16
 
12 17
     // Connexion à socket.io
@@ -18,7 +23,8 @@ function init() {
18 23
     // On demande le pseudo a l'utilisateur, on l'envoie au serveur et on l'affiche dans le titre
19 24
     $("#game").html("<input type=\"text\" id=\"pseudo\" /><input type=\"submit\" id=\"start\" value=\"Valider\" />");
20 25
     $("#start").on("click", function() {
21
-      socket.emit('nouveau', $("#pseudo").val());
26
+      pseudo = $("#pseudo").val();
27
+      socket.emit('nouveau', pseudo);
22 28
       document.title = $("#pseudo").val() + ' - ' + document.title;
23 29
       $("#game").html("Recherche d'un adversare...");
24 30
     });
@@ -32,8 +38,16 @@ var setEventHandlers = function() {
32 38
 	socket.on("autres", onAutres);
33 39
   socket.on("game", onGame);
34 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 51
 function onGame(game) {
38 52
   gameInfos = game;
39 53
   $("#game").html("Adversaire trouvé : "+game[0]+"<br />Début de la partie dans 5s.");
@@ -136,13 +150,14 @@ function nextQuestion() {
136 150
   $("#rep1").removeClass();
137 151
   $("#rep2").removeClass();
138 152
   $("#both").removeClass();
139
-  // Dernière question du thème en cours
153
+  pauseGame();
154
+  /*// Dernière question du thème en cours
140 155
   if((id_quest+1) == theme.questions.length)  {
141 156
     // Dernier thème de la catégorie en cours
142 157
     if((id_theme+1) == category.themes.length) {
143 158
       // Dernière catégorie
144 159
       if((id_cat+1) == 2) {
145
-        endGame();
160
+        pauseGame();
146 161
       } else {
147 162
         id_quest = 0;
148 163
         id_theme = 0;
@@ -157,7 +172,7 @@ function nextQuestion() {
157 172
   } else {
158 173
     id_quest++;
159 174
     quest(id_quest);
160
-  }
175
+  }*/
161 176
 }
162 177
 
163 178
 function play(questions) {
@@ -179,31 +194,31 @@ function stopTimer() {
179 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 205
 function endGame() {
206
+  stopTimer();
183 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 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 224
 function addScore(userLogin, userScore) {

+ 46
- 20
web/multi/server/server.js ファイルの表示

@@ -15,18 +15,6 @@ var setEventHandlers = function() {
15 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 18
 // Fonction prenant en paramètre le client (voir ci-dessus)
31 19
 // Réception ou envoi d'évènement à partir de cet objet : client
32 20
 function onSocketConnection(client) {
@@ -40,12 +28,12 @@ function onSocketConnection(client) {
40 28
         //client.emit('message', 'bien reçu !!');
41 29
 
42 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 32
           games[games.length-1].joueur1.socket.emit("game", [games[games.length-1].joueur2.login, games[games.length-1].idGame]);
45 33
           games[games.length-1].joueur2.socket.emit("game", [games[games.length-1].joueur1.login, games[games.length-1].idGame]);
46 34
           lobby = [];
47 35
         } else {
48
-          lobby.push({login: pseudo, socket: client});
36
+          lobby.push({login: pseudo, socket: client, over: false, score: 0});
49 37
         }
50 38
         // Envoi d'un message aux autres clients connectés
51 39
         //client.broadcast.emit('autres', pseudo);
@@ -54,15 +42,53 @@ function onSocketConnection(client) {
54 42
       console.log(err);
55 43
     });
56 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 94
 // Initialisation