2014-02-08 185 views
0

这是一个非常简单的面向对象的JavaScript游戏的开始。我无法将玩家添加到Games players []阵列中。如何才能做到这一点?OO Javascript游戏,如何添加玩家游戏的玩家数组?

我已经删除所有的问题

var BobsGame = function(){ 
this.Players = []; 
} 

BobsGame.prototype.addPlayer = function(Player){ 
//not working 
Player.Game = this; 
this.Players.push(Player); 
Player.setId = function(this.Players.length) { 
    return this.Players.length; 
} 
return this; 
} 

var Player = function(name){ 
this.Game = null; 
this.score = 0; 
this.name = name; 
this.id = null; 
// return alert('Player ' + this.name + ' has been created'); 
} 

var myGame = new BobsGame(); 

var Player1 = new Player("Tom"); 
var Player2 = new Player("Bob"); 

myGame.addPlayer(Player1); 
+0

use Array.prototyspe.push();正如你已经做的那样。你现在的代码有什么问题?唯一的问题是,你正在命名一个变量('Player'),就像你已经命名一个类一样。 –

回答

4

我想什么你想不相关的代码:

var BobsGame = function() { 
    this.Players = []; 
}; 

BobsGame.prototype.addPlayer = function (Player) { 
    this.Players.push(Player); 
    Player.id = this.Players.length; 
    return this; 
}; 

var Player = function (name) { 
    this.score = 0; 
    this.name = name; 
    this.id = null; 
    // return alert('Player ' + this.name + ' has been created'); 
}; 

var myGame = new BobsGame(); 

var Player1 = new Player("Tom"); 
var Player2 = new Player("Bob"); 

myGame.addPlayer(Player1); 

错误是在下面的代码:

Player.setId = function(this.Players.length) { 
    return this.Players.length; 
} 

这里您正在尝试创建一个名为setId的函数,但您无法定义this.Players.length作为论点。因此,假如你想给玩家的ID设置为玩家数组的长度,你可以简单的给它分配是这样的:

Player.id = this.Players.length; 

顺便说一句,我建议你不要调用的参数addPlayerPlayer”,因为这会隐藏已定义的功能Player。您可能想将其重命名为“player”。