0

我正在尝试作为初学者创建一个国际象棋游戏,我遇到的一个问题是我需要一个棋子架来保存分配给棋子的值。工件架会改变每件的位置,但我需要改变原件的价值

我尝试添加另一个持有者对象,但这会导致同样的问题。然后,我尝试只留下点,看看它是否会在程序无法识别的情况下工作。然后,我在它周围加上括号,希望它会被更改然后注册,但它也不起作用。

function pieces(piece ,posX, posY, moveCount, tileLocation, turn) {
  this.piece = piece;
  this.posX = posX;
  this.posY = posY;
  this.moveCount = moveCount;
  this.tileLocation = tileLocation;
  this.turn = turn;
}
function pieceHolder(pieceHold, extra, turn, color, tile){
  this.pieceHold = pieceHold;
  this.extra = extra;
  this.turn = turn;
  this.color = color;
  this.tile = tile;
}
onEvent("wpawn1", "click", function() { //"wpawn1" is the id for another button
  holder.pieceHold = wpawn1.piece;
  holder.extra = 5;
  holder.turn = wpawn1.turn;
  holder.tile = wpawn1.tileLocation;
});


var holder = new pieceHolder();
var wpawn1 = new pieces("wpawn1", -5, 285, 0, "a2", 0, "w");
var wpawn2 = new pieces("wpawn2", 35, 285, 0, "b2", 0, "w");

holder.piece.tileLocation = holder.tile; // did not work
(holder.piece).tileLocation = holder.tile; // did not work

我希望将 holder.piece 转换为名称,例如 wpawn1 或 wpawn2。然后它将其注册为 wpawn1.tileLocation 或 wpawn2.tileLocation。它们都不起作用,程序无法理解我的代码。

4

2 回答 2

0

尝试这个:

var holder = new pieceHolder({});

在构造持有人对象时,您不会将任何东西作为一块传递,所以它是undefined. 尝试访问时,holder.piece.tileLocation您正在尝试 tileLocation from undefined。更好的方法是始终为您的参数使用默认值。

于 2019-01-16T01:43:28.277 回答
0

语法很好,但您试图holder在参数中的回调(函数)onEvent被执行之前到达对象的内容。

于 2019-01-16T02:31:37.657 回答