有没有办法使用 chess.js 启用促销?

问题描述 投票:0回答:2
var move = game.move({
    from: source,
    to: target,
    promotion: 'q' 
})

其中一期建议,为了决定促销,只需将上面的代码更改为

var move = game.move({
    from: source,
    to: target,
    promotion: 'desired piece' 
})

我尝试了各种方法,包括

promotion: 'q||n'

promotion: 'q'
promotion: 'n'

当谈到让玩家自由选择降级时,我找不到办法这样做。有这样的办法吗

javascript chess
2个回答
1
投票

是的,您可以更改促销品类型:

promotion: 'r' // For rook
promotion: 'b' // For bishop
promotion: 'n' // For knight

如果您希望用户能够决定他/她想要哪一块,您需要为此创建一个界面,例如带有按钮的弹出窗口。然后您可以使用

game.move({...})
所需的棋子字符集来调用
promotion


0
投票

如果您将react-chessboard库与chess.js一起使用,则可以使用

onPieceDrop={onDrop}

<Chessboard position={fen} onPieceDrop={onDrop} />

然后,您的代码可能如下所示:

const onDrop = (source: string, target: string, piece: string) => {
    try {
      const move = game.move({
        from: source,
        to: target,
        promotion: piece.slice(-1).toLowerCase(),
      });
        updateStatus();
        return true;
      }
    } catch (error) {
      console.error(error);
      return false;
    }
  };
  

© www.soinside.com 2019 - 2024. All rights reserved.