所以,我已经开发了一个小游戏的基础... tic tac toe ...但我有一个问题而且我不知道如何以最好的方式解决这个问题...所以我有这样:
var playfield = function(){
this.board = [
[null, null, null],
[null, null, null],
[null, null, null]
];
this.simulationMode = false;
this.nextSymbol = "X";
this.setSymbol = function(symbol, x, y){
if(this.whoIsNext() == symbol || this.simulationMode){
if(this.isFree(x, y)){
this.board[y][x] = symbol;
this.changeWhoIsNext();
return true;
}else{
console.log("Field is not empty "+x+";"+y);
return false;
}
}else{
console.log("It is not "+symbol+"'s turn");
}
};
...
}
这会存储游戏场本身。
var board1 = new playfield();
然后我想创建一个新实例来计算下一个动作:
var simboard = new playfield();
然后我这样做:
simboard.setSymbol("X", x, y);
它在board1和simboard中进行了更改。 为什么?我做错了什么......?
完整的来源可以在这里找到: https://gameink.net/js/tictactoe.js?PageSpeed=off
答案 0 :(得分:0)
这是因为javascript对象引用
试试这个
playfield.prototype = Object.create(playfield.prototype);
所以无论何时你都会使用它,所以每次进入新实例时都会这样。