簡體   English   中英

使用隨機對象填充對象,並在javascript中設置特定屬性

[英]Populate a Object with random Objects, and setting specific properties in javascript

我正在使用NodeJS和socket.io創建一個在線瀏覽器紙牌游戲。

我在底部編寫了代碼,其中一個對象填充了兩個玩家(0和1),然后每個玩家都獲得了一個持有卡組的對象,其中還有兩個對象,它們分別持有卡牌以對象的形式。

userlists: { // I have more than just "g" in here, but for this part, only "g" is needed
    "g": { // Holds the different game-sessions
        "roomid": { // A Game-Session
            "Players": { // Contains the 2 Opponents
                0: { // Opponent 1
                    "deck": { // The deck of Opponent 1 (note that the different decks are no objects, though if needed, they could be)
                        "onHand": [ // Contains all the Cards "on-Hand"
                            {
                                "Type": "Knight",
                                ... // more properties
                                "position": 0 // The position of the Card on the hand of the Player
                            },
                            ... // more Cards
                        ],
                        "inBlock": [ // Contains all the reserve-Cards
                            ... // as in ["onHand"], but with ["position"]=null
                        ]
                    }
                },
                1: { // Opponent 2
                    ... // same as Opponent 1, just different deck of course
                }
            }
        }
    }
}

但這是一個問題,下面的代碼實際上無法產生預期的結果。 實際上,它首先會輸出所需的數字,但是隨后,它將被發送到客戶端( function snddcks() ), "position" (實際上也是所有其他屬性)發送給客戶端,每個"Type" ,因此所有"Type":"Knight"都將具有"position":0 ,依此類推。

這就是問題所在,我無法弄清楚它為什么會真正發生。

最后,我將快速解釋該過程:

  1. 好吧,首先,加入的玩家(NR 1,不是0)在userlists["g"][roomid]創建游戲會話對象(服務器端),其中roomid是隨機生成的串
  2. NR1,然后告訴NR0他已經加入,然后NR0將“ playerhasjoined”發回服務器
  3. 然后在服務器端,調用函數“ populateDeck”,然后填充卡座,首先填充NR0,然后填充NR1
  4. 最后,調用“ snddcks”,然后將所有數據發送到兩個客戶端

因此,在第3步中,所有“位置”和其他屬性均已正確設置,但在第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);
}

最后!! 盡管花了我大約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()保存Card-Object,並使用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)
            }
        });
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM