JavaScript中的多人游戏运动

时间:2012-03-01 15:07:07

标签: javascript html5 node.js socket.io html5-canvas

这是我的客户:http://pastebin.com/C9PHzTQg 这是我的服务器:http://pastebin.com/j2dfL84d

现在是“多人”直播,但如何做动作?

我发送给'b' - “UP”,“LEFT”,“RIGHT”,“DOWN”以及如何处理蚂蚁移动玩家?

抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

首先,你需要学习原型继承!实际上,每个Player都有自己的draw方法副本,因此将draw放在Player.prototype上:

var Player = function(context, x, y) {
    this.context = context;
    this.x = x;
    this.y = y;
};

Player.prototype = {
    draw: function() {
        this.context.fillRect(this.x, this.y, 16, 16);
    }
};

然后,我建议您向move添加Player方法:

Player.prototype = {
    draw: function() {
        this.context.fillRect(this.x, this.y, 16, 16);
    },

    move: function(direction) {
        // direction is "UP", "DOWN", "LEFT" or "RIGHT"
        switch(direction) {
            case "UP":
                this.y += 16;
                break;
            // ...
        }
    }
};

然后,在您的消息处理程序中,您只需:

socket.on('b', function(data) {
    players[data.player].move(data.direction);
    draw();
});

在服务器中,您可以emit('b', { player: playerId, direction: "UP" },例如。

更新:而不是上面draw内的socket.on('b', ...,您可能会遇到以下情况:

setInterval(draw, 100);

每100毫秒重绘一次。这取决于游戏的类型,我想。