OO Javascript游戏,如何添加玩家游戏的玩家数组?
问题描述:
这是一个非常简单的面向对象的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);
答
我想什么你想不相关的代码:
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;
顺便说一句,我建议你不要调用的参数addPlayer
“Player
”,因为这会隐藏已定义的功能Player
。您可能想将其重命名为“player
”。
use Array.prototyspe.push();正如你已经做的那样。你现在的代码有什么问题?唯一的问题是,你正在命名一个变量('Player'),就像你已经命名一个类一样。 –