2016-07-20 11 views
0

NodeJSとsocket.ioを使用してオンラインブラウザカードゲームを作成しています。オブジェクトにランダムオブジェクトを設定し、javacriptで特定のプロパティを設定する

オブジェクトは2つのプレーヤ(0と1)でオブジェクトが生成され、そのそれぞれがデッキを保持するオブジェクトを取得し、その中にさらに2つのオブジェクトがあり、カードをオブジェクトの形で保持する。

しかし、これは疑問であり、下のコードは実際には望ましい結果を生み出すものではありません。実際には、まず最初に、希望の数値を出力しますが、クライアントに"position"(実際には他のプロパティも)送信される(function snddcks())時点で、としていくらかコピーされます。 "Type":"Knight"の場合は"position":0となります。

それが実際にどうして起こるのかわかりませんが、それは問題です。私はすぐにプロセスを説明します最後に

、:よく

  1. 、すべての最初には、参加するプレイヤー、(それのNR 1、0ではない)は、(ゲーム・セッション・オブジェクトを作成しますuserlists["g"][roomid]でサーバー側)、roomidはランダムに生成された文字列
  2. NR1であり、そして "機能は、サーバー側でサーバー
  3. に「playerhasjoined」その後、返信者、彼が参加したことNR0を伝えますpopulateDeck "が呼び出され、デッキに最初にNR0、次にNR1のためにデリバリされます。
  4. 最後に "snddcks"が呼び出され、すべてのデータが両方のクライアントに送信されます

したがって、すべての「位置」とその他のプロパティは正しく設定されていますが、手順4では、それらは上書きされます。

function joingid() { 
    var roomid = userlists["eo"][socket.username]["gid"]; 

    socket.state = "playing"; 
    socket.join(roomid); 
    socket.leave("lobby"); 
    socket.leave("searching"); 

    socket.emit("playerfound", { 
     gid: roomid 
    }); 
    socket.broadcast.to(roomid).emit('playerjoined', { 
     usr: socket.username, 
     gid: roomid 
    }); 
} 
socket.on('playerhasjoined', function(data) { 
    socket.state = "playing"; 
    socket.leave("lobby"); 

    var roomid = userlists["eo"][socket.username]["gid"]; 

    socket.broadcast.to(roomid).emit('otheropponent', { 
     usr: socket.username 
    }); 

    setTimeout(function() { 
     populateDeck2(roomid, data["oppo"]); 
    }, 500); 
}); 

function gRC(roomid, i, i2) { 
    userlists["g"][roomid]["Players"][i2]["deck"]["onHand"][i] = standardDeckCards[Math.floor(Math.random() * standardDeckCards.length)]; 
    userlists["g"][roomid]["Players"][i2]["deck"]["onHand"][i]["CID"] = "CID-"+(Math.floor((Math.random() * 1000) + 1)).toString(); 
    userlists["g"][roomid]["Players"][i2]["deck"]["onHand"][i]["position"] = i; 
} 
function gRCc(roomid, i, i2) { 
    return function() { 
     gRC(roomid, i, i2); 
    }; 
} 
function gRC2(roomid, i, i2) { 
    userlists["g"][roomid]["Players"][i2]["deck"]["inBlock"][i] = standardDeckCards[Math.floor(Math.random() * standardDeckCards.length)]; 
    userlists["g"][roomid]["Players"][i2]["deck"]["inBlock"][i]["CID"] = "CID-"+(Math.floor((Math.random() * 1000) + 1)).toString(); 
    userlists["g"][roomid]["Players"][i2]["deck"]["inBlock"][i]["position"] = i; 
} 
function gRCc2(roomid, i, i2) { 
    return function() { 
     gRC2(roomid, i, i2); 
    }; 
} 
function gRC2_1(roomid, a1i, a2i, card) { 
    return function() { 
     userlists["g"][roomid]["Players"][a1i]["deck"]["onHand"].push(card); 
     userlists["g"][roomid]["Players"][a1i]["deck"]["onHand"][a2i]["CID"] = "CID-"+(Math.floor((Math.random() * 1000) + 1)).toString(); 
     userlists["g"][roomid]["Players"][a1i]["deck"]["onHand"][a2i]["position"] = a2i; 
    }; 
} 
function populateDeck2(roomid, oppo) { 
    var oppos = [socket.username, oppo]; 
    userlists["g"][roomid] = { 
     "RoomID": roomid, 
     "Players": { 
      0: { 
       "Player": socket.username, 
       "deck": { 
        "onHand": [], 
        "onField": [], 
        "inBlock": [] 
       }, 
       "MP-Left": 20 
      }, 
      1: { 
       "Player": oppo, 
       "deck": { 
        "onHand": [], 
        "onField": [], 
        "inBlock": [] 
       }, 
       "MP-Left": 20 
      } 
     }, 
     "Creationdate": Date().toString(), 
     "Winner": null, 
     "currentPlayer": oppos[Math.floor(Math.random() * oppos.length)], 
     "roundNR": 0 
    }; 
    for (var a1 = 0; a1 < 2; a1++) { // plnr 
     for (var a2 = 0; a2 < 5; a2++) { // onHand 
      (function() { 
       gRCc(roomid, a2, a1)(); 
      })(); 

      // gRC2_1(roomid, a1, a2, gRC())(); 

      // (function() { 
      //  var card1 = gRC(); 
      //  userlists["g"][roomid]["Players"][a1]["deck"]["onHand"].push(card1); 
      //  userlists["g"][roomid]["Players"][a1]["deck"]["onHand"][a2]["CID"] = "CID-"+(Math.floor((Math.random() * 1000) + 1)).toString(); 
      //  userlists["g"][roomid]["Players"][a1]["deck"]["onHand"][a2]["position"] = a2; 
      //  console.log("@"+a1+"::"+a2+" >> "+userlists["g"][roomid]["Players"][a1]["deck"]["onHand"][a2]["CID"]+" AND "+userlists["g"][roomid]["Players"][a1]["deck"]["onHand"][a2]["position"]); 
      // })(); 
     } 
     for (var a3 = 0; a3 < 50; a3++) { // inBlock 
      (function() { 
       gRCc2(roomid, a3, a1)(); 
      })(); 

      // (function() { 
      //  userlists["g"][roomid]["Players"][a1]["deck"]["inBlock"].push(gRC()); 
      //  userlists["g"][roomid]["Players"][a1]["deck"]["inBlock"][a3]["CID"] = "CID-"+(Math.floor((Math.random() * 1000) + 1)).toString(); 
      // })(); 
     } 
     fs.writeFile("userlistsLOG_1.log", "ONE: "+a1+""+Date().toString()+":\n"+JSON.stringify(userlists["g"][roomid]["Players"][a1]["deck"]["onHand"])+"\n\n", {flag:"a"}, function (err) { 
      if (err) { 
       console.log('error happened during writing to log') 
       return console.log(err) 
      } 
     }); 
    } 
    SP("gamepage.html", function FNCr(CALLBACKf) { 
     setTimeout(function() { 
      $(".gameid").html(roomid); 
      $(".opponent").html(opponent); 
      $(".giveupbutton").on('click', function() { 
       socket.emit('giveup'); 
      }); 
      $(".get_g_button").on('click', function() { 
       socket.emit('get_g', { 
        gid: roomid 
       }); 
      }); 

      $("#PAGETITLE").html("Da_Cards: VS "+opponent); 
      // socket.emit("rcvsrlst"); 

      typeof CALLBACKf === 'function' && CALLBACKf(); 
     }, 1500); 
    }, "aiI", roomid); 
    SCL("gamepage loaded", "", "aiI", roomid); 

    snddcks(); 
    snddcks(true); 
} 

function snddcks(oppo) { 
    var oppo = oppo || false; 
    var roomid = userlists["eo"][socket.username]["gid"]; 
    if (oppo === true) { 
     socket.broadcast.to(roomid).emit('snddcks', { 
      "d0_MP-Left": userlists["g"][roomid]["Players"][1]["MP-Left"], 
      "d0_onHand": userlists["g"][roomid]["Players"][1]["deck"]["onHand"], 
      "d0_onField": userlists["g"][roomid]["Players"][1]["deck"]["onField"], 
      "d0_inBlockC": userlists["g"][roomid]["Players"][1]["deck"]["inBlock"].length, 
      "d1_MP-Left": userlists["g"][roomid]["Players"][0]["MP-Left"], 
      "d1_onHand": userlists["g"][roomid]["Players"][0]["deck"]["onHand"].length, 
      "d1_onField": userlists["g"][roomid]["Players"][0]["deck"]["onField"], 
      "d1_inBlockC": userlists["g"][roomid]["Players"][0]["deck"]["inBlock"].length, 
     }); 
     console.log("Sent decks into "+roomid); 
     fs.writeFile("userlistsLOG_2.log", "TWO 1: "+Date().toString()+":\n"+JSON.stringify(userlists["g"][roomid]["Players"][1]["deck"]["onHand"])+"\n\n", {flag:"a"}, function (err) { 
      if (err) { 
       console.log('error happened during writing to log') 
       return console.log(err) 
      } 
     }); 
    } else if (oppo === false) { 
     socket.emit('snddcks', { 
      "d0_MP-Left": userlists["g"][roomid]["Players"][0]["MP-Left"], 
      "d0_onHand": userlists["g"][roomid]["Players"][0]["deck"]["onHand"], 
      "d0_onField": userlists["g"][roomid]["Players"][0]["deck"]["onField"], 
      "d0_inBlockC": userlists["g"][roomid]["Players"][0]["deck"]["inBlock"].length, 
      "d1_MP-Left": userlists["g"][roomid]["Players"][1]["MP-Left"], 
      "d1_onHand": userlists["g"][roomid]["Players"][1]["deck"]["onHand"].length, 
      "d1_onField": userlists["g"][roomid]["Players"][1]["deck"]["onField"], 
      "d1_inBlockC": userlists["g"][roomid]["Players"][1]["deck"]["inBlock"].length, 
     }); 
     console.log("Sent decks to "+socket.username); 
     fs.writeFile("userlistsLOG_2.log", "TWO 0: "+Date().toString()+":\n"+JSON.stringify(userlists["g"][roomid]["Players"][0]["deck"]["onHand"])+"\n\n", {flag:"a"}, function (err) { 
      if (err) { 
       console.log('error happened during writing to log') 
       return console.log(err) 
      } 
     }); 
    } 

    // setTimeout(function() { 
    //  // fs.writeFileSync("userlistsLOG.log", Date().toString()+":\n"+JSON.stringify(userlists["g"][roomid]["Players"][0]["deck"])+"\n\n", {flag:"a"}); 
    //  // fs.writeFileSync("userlistsLOG.log", Date().toString()+":\n"+JSON.stringify(userlists["g"][roomid]["Players"][1]["deck"])+"\n\n", {flag:"a"}); 
    // }, 100); 
} 

ここで古いコードです:

はここに新しいコードです。最後

function joingid() { 
    var roomid = userlists["eo"][socket.username]["gid"]; 

    socket.state = "playing"; 
    socket.join(roomid); 
    socket.leave("lobby"); 
    socket.leave("searching"); 

    socket.emit("playerfound", { 
     gid: roomid 
    }); 
    socket.broadcast.to(roomid).emit('playerjoined', { 
     usr: socket.username, 
     gid: roomid 
    }); 

    userlists["g"][roomid] = { 
     "RoomID": roomid, 
     "Players": {}, 
     "Creationdate": Date().toString(), 
     "Winner": null, 
     "currentPlayer": null, 
     "roundNR": 0 
    }; 
} 
socket.on('playerhasjoined', function (data) { 
    socket.state = "playing"; 
    socket.leave("lobby"); 

    var roomid = userlists["eo"][socket.username]["gid"]; 

    socket.broadcast.to(roomid).emit('otheropponent', { 
     usr: socket.username 
    }); 

    setTimeout(function() { 
     populateDeck(roomid, "0", function() { 
      setTimeout(function() { 
       // lgp(function() { 
       //  snddcks(); 
       // }); 
       populateDeck(roomid, "1", function() { 
        setTimeout(function() { 
         SP("gamepage.html", function FNCr(CALLBACKf) { 
          setTimeout(function() { 
           $(".gameid").html(roomid); 
           $(".opponent").html(opponent); 
           $(".giveupbutton").on('click', function() { 
            socket.emit('giveup'); 
           }); 
           $(".get_g_button").on('click', function() { 
            socket.emit('get_g', { 
             gid: roomid 
            }); 
           }); 

           $("#PAGETITLE").html("Da_Cards: VS " + opponent); 
           // socket.emit("rcvsrlst"); 

           typeof CALLBACKf === 'function' && CALLBACKf(); 
          }, 1500); 
         }, "aiI", roomid); 
         SCL("gamepage loaded", "", "aiI", roomid); 

         snddcks(); 
         snddcks(true); 

         // console.error("THE ROOMID IS "+roomid.toString()); 
         // lgp(roomid, function() { 
         //  console.error("THE ROOMID IS "+roomid.toString()); 
         //  snddcks(true); 
         // }); 
        }, 100); 
       }); 
      }, 100); 
     }); 
    }, 100); 
}); 

function gCA(mode, i, im, roomid, plnr, callback) { 
    if (mode === "1r") { 
     return standardDeckCards[Math.floor(Math.random() * standardDeckCards.length)]; 
    } else if (mode === "pop_onHand") { 
     if (i < im) { 
      var card = standardDeckCards[Math.floor(Math.random() * standardDeckCards.length)]; 

      // var randI = "CID-"+(Math.floor((Math.random() * 1000000) + 1)).toString(); 
      var randI = "CID_" + i.toString(); 

      card["CID"] = randI; 
      // card["position"] = i; 
      userlists["g"][roomid]["Players"][plnr]["deck"]["onHand"].push(card); 
      userlists["g"][roomid]["Players"][plnr]["deck"]["onHand"][i]["position"] = i; 
      console.log("1_" + plnr + " :: " + userlists["g"][roomid]["Players"][plnr]["deck"]["onHand"][i]["CID"] + " with " + userlists["g"][roomid]["Players"][plnr]["deck"]["onHand"][i]["position"] + " and " + card["position"]); 
      // userlists["g"][roomid]["Players"][plnr]["deck"]["onHand"].push(socket.card); 
      // console.log((i+" and "+card["position"])+" and "+userlists["g"][roomid]["Players"][plnr]["deck"]["onHand"][i]["position"]+" and "+plnr); 

      i++; 
      setTimeout(function() { 
       gCA("pop_onHand", i, 5, roomid, plnr, callback); 
      }, 150); 
     } else if (i === im) { 
      setTimeout(function() { 
       gCA("pop_inBlock", 0, 50, roomid, plnr, callback); 
      }, 150); 
     } 
    } else if (mode === "pop_inBlock") { 
     if (i < im) { 
      var card2 = standardDeckCards[Math.floor(Math.random() * standardDeckCards.length)]; 
      userlists["g"][roomid]["Players"][plnr]["deck"]["inBlock"].push(card2); 
      console.log(i + " :: " + userlists["g"][roomid]["Players"][plnr]["deck"]["inBlock"][i]["position"]); 

      i++; 
      setTimeout(function() { 
       gCA("pop_inBlock", i, 50, roomid, plnr, callback); 
      }, 150); 
     } else if (i === im) { 
      for (var j = 0; j < userlists["g"][roomid]["Players"][plnr]["deck"]["onHand"].length; j++) { 
       console.log("2_" + plnr + " :: " + userlists["g"][roomid]["Players"][plnr]["deck"]["onHand"][j]["CID"] + " with " + userlists["g"][roomid]["Players"][plnr]["deck"]["onHand"][j]["position"]); 
      } 
      setTimeout(function() { 
       typeof callback === 'function' && callback(); 
      }, 50); 
     } 
    } 
} 

function gRC() { 
    return standardDeckCards[Math.floor(Math.random() * standardDeckCards.length)]; 
} 

function gCA2(roomid, plnr, callback) { 
    userlists["g"][roomid]["Players"][plnr]["deck"]["onHand"]; 
} 

function populateDeck(roomid, plnr, callback) { 
    userlists["g"][roomid]["Players"][plnr] = { 
     "Player": socket.username, 
     "deck": null, 
     "MP-Left": 20 
    }; 

    // Hier könnten nachher dann noch die gekauften Karten und so eingefügt werden, 
    // bzw. dat vorgefertigte Deck usw. 
    userlists["g"][roomid]["Players"][plnr]["deck"] = { 
     "onHand": [], 
     "onField": [], 
     "inBlock": [] 
    }; 

    // gCA("pop_onHand", 0, 5, roomid, plnr, callback); 
    var k1 = 0; 
    (function loop1() { 
     if (k1 < 5) { 
      userlists["g"][roomid]["Players"][plnr]["deck"]["onHand"].push(gRC()); 
      userlists["g"][roomid]["Players"][plnr]["deck"]["onHand"][k1]["position"] = k1; 
      k1++; 
      loop1(); 
     } else { 
      var k2 = 0; 
      (function loop2() { 
       if (k2 < 50) { 
        userlists["g"][roomid]["Players"][plnr]["deck"]["inBlock"].push(gRC()); 
        k2++; 
        loop2(); 
       } else { 
        var k3 = 0; 
        (function loop3() { 
         if (k3 < 5) { 
          userlists["g"][roomid]["Players"][plnr]["deck"]["onHand"][k3]["position"] = k3; 
          k3++; 
          loop3(); 
         } else { 
          setTimeout(function() { 
           typeof callback === 'function' && callback(); 
          }, 50); 
         } 
        }()); 
       } 
      }()); 
     } 
    }()); 
} 

function snddcks(oppo) { 
    var oppo = oppo || false; 
    var roomid = userlists["eo"][socket.username]["gid"]; 
    if (userlists["g"][roomid]["Setup"] === false) { 
     var k5 = 0; 
     (function loop5() { 
      if (k5 < 5) { 
       userlists["g"][roomid]["Players"][0]["deck"]["onHand"][k5]["position"] = k5; 
       k5++; 
       loop5(); 
      } else { 
       var k6 = 0; 
       (function loop6() { 
        if (k6 < 5) { 
         userlists["g"][roomid]["Players"][1]["deck"]["onHand"][k6]["position"] = k6; 
         k6++; 
         loop6(); 
        } else { 
         setTimeout(function() { 
          typeof callback === 'function' && callback(); 
         }, 50); 
        } 
       }()); 
      } 
     }()); 
     userlists["g"][roomid]["Setup"] = true; 
    } 
    if (oppo === true) { 
     socket.broadcast.to(roomid).emit('snddcks', { 
      "d0_MP-Left": userlists["g"][roomid]["Players"][1]["MP-Left"], 
      "d0_onHand": userlists["g"][roomid]["Players"][1]["deck"]["onHand"], 
      "d0_onField": userlists["g"][roomid]["Players"][1]["deck"]["onField"], 
      "d0_inBlockC": userlists["g"][roomid]["Players"][1]["deck"]["inBlock"].length, 
      "d1_MP-Left": userlists["g"][roomid]["Players"][0]["MP-Left"], 
      "d1_onHand": userlists["g"][roomid]["Players"][0]["deck"]["onHand"].length, 
      "d1_onField": userlists["g"][roomid]["Players"][0]["deck"]["onField"], 
      "d1_inBlockC": userlists["g"][roomid]["Players"][0]["deck"]["inBlock"].length, 
     }); 
     console.log("Sent decks into " + roomid); 
    } else if (oppo === false) { 
     socket.emit('snddcks', { 
      "d0_MP-Left": userlists["g"][roomid]["Players"][0]["MP-Left"], 
      "d0_onHand": userlists["g"][roomid]["Players"][0]["deck"]["onHand"], 
      "d0_onField": userlists["g"][roomid]["Players"][0]["deck"]["onField"], 
      "d0_inBlockC": userlists["g"][roomid]["Players"][0]["deck"]["inBlock"].length, 
      "d1_MP-Left": userlists["g"][roomid]["Players"][1]["MP-Left"], 
      "d1_onHand": userlists["g"][roomid]["Players"][1]["deck"]["onHand"].length, 
      "d1_onField": userlists["g"][roomid]["Players"][1]["deck"]["onField"], 
      "d1_inBlockC": userlists["g"][roomid]["Players"][1]["deck"]["inBlock"].length, 
     }); 
     console.log("Sent decks to " + socket.username); 
    } 

    setTimeout(function() { 
     fs.writeFileSync("userlistsLOG.log", Date().toString() + ":\n" + JSON.stringify(userlists["g"][roomid]["Players"][0]["deck"]["onHand"]) + "\n\n", { 
      flag: "a" 
     }) 
     // fs.writeFileSync("userlistsLOG.log", Date().toString()+":\n"+JSON.stringify(userlists["g"][roomid]["Players"][0]["deck"])+"\n\n", {flag:"a"}); 
     // fs.writeFileSync("userlistsLOG.log", Date().toString()+":\n"+JSON.stringify(userlists["g"][roomid]["Players"][1]["deck"])+"\n\n", {flag:"a"}); 
    }, 500); 
} 
+0

サーバー側でこのタイムアウト事は何を必要とされている:

そしてここでは、「完全固定の質問」-codeですか? 何故再帰的に反復するのですか? – Lemonade

+0

私が理解する限り、NodeJSはほぼ完全に非同期です。 また、クライアントが特定のデータを他のものよりも先に受信しないため、タイムアウトが実際に必要な場所でも(私はかなり覚えていません)。 – AnthyG

+1

実行時環境にいくつかのライブラリを持つJSです。ちょうどブラウザではない。簡単な反復のための関数を持つ理由はありません...あなたのループを書き直してみてください。 メソッド呼び出しの前にタイムアウトを使用しないでください。意味がありません。ブロックしていないソースを待って、しきい値を見積もる必要がある場合に限ります。しかし、これは危険です... – Lemonade

答えて

0

!! 私はそれが3日のように私を取ったもののちょうど..有益なコメント:)

ため@LemmyTauerへ だから、多くの多くのおかげで私の問題を解決しました。ここに興味深いコード部分です:

でそう
function generatedeckthigieandreturn(number) { 
    var arr; 
    arr = []; 
    var fncs; 
    fncs = []; 
    var ARRAYTHINGIEd = []; 

    function gRC() { 
     console.log("gRC called"); 
     return standardDeckCards[Math.floor(Math.random() * standardDeckCards.length)]; 
    } 

    for (var a = 0; a < number; a++) { 
     console.log(a); 
     fncs[a] = function(b) { 
      console.log(a+" called"); 
      return function() { 
       arr[b] = gRC(); 
       arr[b]["position"] = b; 
       arr[b]["CID"] = "CID-"+(Math.floor((Math.random() * 900) + 100)).toString(); 
       console.log(JSON.stringify(arr[b], null, 4)); 
       return JSON.stringify(arr[b]); 
      } 
     }; 
    } 
    for (var c = 0; c < number; c++) { 
     ARRAYTHINGIEd.push(JSON.parse(fncs[c](c)())); 
    } 
    return ARRAYTHINGIEd; 
} 
for (var xa = 0; xa < 2; xa++) { 
    userlists["g"][roomid]["Players"][xa]["deck"]["onHand"] = generatedeckthigieandreturn(5); 
    userlists["g"][roomid]["Players"][xa]["deck"]["inBlock"] = generatedeckthigieandreturn(50); 
} 

最後に、JSON.stringify()を使用してカードオブジェクトを保存し、JSON.parse()を「通常」のフォーマットに戻しました。

function joingid() { 
    var roomid = userlists["eo"][socket.username]["gid"]; 

    socket.state = "playing"; 
    socket.join(roomid); 
    socket.leave("lobby"); 
    socket.leave("searching"); 

    socket.emit("playerfound", { 
     gid: roomid 
    }); 
    socket.broadcast.to(roomid).emit('playerjoined', { 
     usr: socket.username, 
     gid: roomid 
    }); 
} 
socket.on('playerhasjoined', function(data) { 
    socket.state = "playing"; 
    socket.leave("lobby"); 

    var roomid = userlists["eo"][socket.username]["gid"]; 

    socket.broadcast.to(roomid).emit('otheropponent', { 
     usr: socket.username 
    }); 

    setTimeout(function() { 
     populateDeck2(roomid, data["oppo"]); 
    }, 500); 
}); 


function populateDeck2(roomid, oppo) { 
    var oppos = [socket.username, oppo]; 
    userlists["g"][roomid] = { 
     "RoomID": roomid, 
     "Players": { 
      0: { 
       "Player": socket.username, 
       "deck": { 
        "onHand": [], 
        "onField": [], 
        "inBlock": [] 
       }, 
       "MP-Left": 20 
      }, 
      1: { 
       "Player": oppo, 
       "deck": { 
        "onHand": [], 
        "onField": [], 
        "inBlock": [] 
       }, 
       "MP-Left": 20 
      } 
     }, 
     "Creationdate": Date().toString(), 
     "Winner": null, 
     "currentPlayer": oppos[Math.floor(Math.random() * oppos.length)], 
     "roundNR": 0 
    }; 

    function generatedeckthigieandreturn(number) { 
     var arr; 
     arr = []; 
     var fncs; 
     fncs = []; 
     var ARRAYTHINGIEd = []; 

     function gRC() { 
      console.log("gRC called"); 
      return standardDeckCards[Math.floor(Math.random() * standardDeckCards.length)]; 
     } 

     for (var a = 0; a < number; a++) { 
      console.log(a); 
      fncs[a] = function(b) { 
       console.log(a+" called"); 
       return function() { 
        arr[b] = gRC(); 
        arr[b]["position"] = b; 
        arr[b]["CID"] = "CID-"+(Math.floor((Math.random() * 900) + 100)).toString(); 
        console.log(JSON.stringify(arr[b], null, 4)); 
        return JSON.stringify(arr[b]); 
       } 
      }; 
     } 
     for (var c = 0; c < number; c++) { 
      ARRAYTHINGIEd.push(JSON.parse(fncs[c](c)())); 
     } 
     return ARRAYTHINGIEd; 
    } 
    for (var xa = 0; xa < 2; xa++) { 
     userlists["g"][roomid]["Players"][xa]["deck"]["onHand"] = generatedeckthigieandreturn(5); 
     userlists["g"][roomid]["Players"][xa]["deck"]["inBlock"] = generatedeckthigieandreturn(50); 
    } 

    SP("gamepage.html", function FNCr(CALLBACKf) { 
     setTimeout(function() { 
      $(".gameid").html(roomid); 
      $(".opponent").html(opponent); 
      $(".giveupbutton").on('click', function() { 
       socket.emit('giveup'); 
      }); 
      $(".get_g_button").on('click', function() { 
       socket.emit('get_g', { 
        gid: roomid 
       }); 
      }); 

      $("#PAGETITLE").html("Da_Cards: VS "+opponent); 
      // socket.emit("rcvsrlst"); 

      typeof CALLBACKf === 'function' && CALLBACKf(); 
     }, 1500); 
    }, "aiI", roomid); 
    SCL("gamepage loaded", "", "aiI", roomid); 

    snddcks(); 
    snddcks(true); 
} 

function snddcks(oppo) { 
    var oppo = oppo || false; 
    var roomid = userlists["eo"][socket.username]["gid"]; 
    if (oppo === true) { 
     socket.broadcast.to(roomid).emit('snddcks', { 
      "d0_MP-Left": userlists["g"][roomid]["Players"][1]["MP-Left"], 
      "d0_onHand": userlists["g"][roomid]["Players"][1]["deck"]["onHand"], 
      "d0_onField": userlists["g"][roomid]["Players"][1]["deck"]["onField"], 
      "d0_inBlockC": userlists["g"][roomid]["Players"][1]["deck"]["inBlock"].length, 
      "d1_MP-Left": userlists["g"][roomid]["Players"][0]["MP-Left"], 
      "d1_onHand": userlists["g"][roomid]["Players"][0]["deck"]["onHand"].length, 
      "d1_onField": userlists["g"][roomid]["Players"][0]["deck"]["onField"], 
      "d1_inBlockC": userlists["g"][roomid]["Players"][0]["deck"]["inBlock"].length, 
     }); 
     console.log("Sent decks into "+roomid); 
     fs.writeFile("userlistsLOG_2.log", "TWO 1: "+Date().toString()+":\n"+JSON.stringify(userlists["g"][roomid]["Players"][1]["deck"]["onHand"])+"\n\n", {flag:"a"}, function (err) { 
      if (err) { 
       console.log('error happened during writing to log') 
       return console.log(err) 
      } 
     }); 
    } else if (oppo === false) { 
     socket.emit('snddcks', { 
      "d0_MP-Left": userlists["g"][roomid]["Players"][0]["MP-Left"], 
      "d0_onHand": userlists["g"][roomid]["Players"][0]["deck"]["onHand"], 
      "d0_onField": userlists["g"][roomid]["Players"][0]["deck"]["onField"], 
      "d0_inBlockC": userlists["g"][roomid]["Players"][0]["deck"]["inBlock"].length, 
      "d1_MP-Left": userlists["g"][roomid]["Players"][1]["MP-Left"], 
      "d1_onHand": userlists["g"][roomid]["Players"][1]["deck"]["onHand"].length, 
      "d1_onField": userlists["g"][roomid]["Players"][1]["deck"]["onField"], 
      "d1_inBlockC": userlists["g"][roomid]["Players"][1]["deck"]["inBlock"].length, 
     }); 
     console.log("Sent decks to "+socket.username); 
     fs.writeFile("userlistsLOG_2.log", "TWO 0: "+Date().toString()+":\n"+JSON.stringify(userlists["g"][roomid]["Players"][0]["deck"]["onHand"])+"\n\n", {flag:"a"}, function (err) { 
      if (err) { 
       console.log('error happened during writing to log') 
       return console.log(err) 
      } 
     }); 
    } 
関連する問題