0

我有一个有 2 个玩家的游戏。他们有几乎相同的开始数据,当然它在游戏过程中会发生变化。

我猜我需要一些构造函数对象之王,我将复制然后修改它,我还需要它是 JSON 以便于 ajax 发送。

有没有可以帮助我的设计模式?我不喜欢使用数据库,因为我只需要单个游戏实例的数据。

这是我现在为一位玩家使用的结构:

player = {
    "active" : true,
    "room" : openRoom,
    "id" : playerID,
    "name": username,
    "hp" : 5,
    "units" : {
        1 : {
            "id" : 1,
            "hp" : 3,
            "row" : 1,
            "square" : 1
        },
        2 : {
            "id" : 2,
            "hp" : 4,
            "row" : 2,
            "square" : 1
        },
        3 : {
            "id" : 3,
            "hp" : 5,
            "row" : 3,
            "square" : 1
        }
    }
};
4

3 回答 3

0

我想你想克隆 JSON 对象。使用 JQuery 最简单的方法是

player1 = $.extend({}, player, {name:"Allen"});
player2 = $.extend({}, player, {name:"John"});

如果不使用 JQuery,请使用 JSON 对象

var player1 = JSON.parse(JSON.stringify(player));
var player2 = JSON.parse(JSON.stringify(player));
player1.name = "Allen";
player2.name = "John";
于 2013-02-08T22:15:10.440 回答
0

http://www.w3schools.com/js/js_objects.asp

在“使用对象构造函数”部分是您需要的所有信息,它显示了一个使用 Person 对象的示例,但我认为它直接适用于您尝试做的事情。

快乐编码!

于 2013-02-08T21:18:42.250 回答
0

有几种关于对象实例化和初始化的设计模式。但是,您似乎不需要任何继承或“属性共享”技术,因此返回新对象的非常简单的函数应该很适合作为构造函数。您甚至可以在编码时使用对象文字。

两个构造函数的示例,每个都有一些参数:

function makePlayer(id, name, units) {
    return {
        "active" : true,
        "room" : openRoom,
        "id" : id,
        "name": name,
        "hp" : 5,
        "units" : units
    };
}
var uuid = 1;
function makeUnit(row) {
    return {
        "id" : uuid++,
        "hp" : 3,
        "row" : row,
        "square" : 1
    };
}
var player = makePlayer(playerId, username, [makeUnit(2), makeUnit(4), makeUnit(3)]);
var jsonstring = JSON.stringify(player);
于 2013-02-08T21:19:03.517 回答