首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在chessboard.js中进行推广(片换)

如何在chessboard.js中进行推广(片换)
EN

Stack Overflow用户
提问于 2015-06-10 18:23:13
回答 1查看 1.7K关注 0票数 2

我有自己的pgn解析器,它支持n个并行变化和嵌套变化。

我已经编写了一个包装器来与它一起使用chessboard.js。

我面临两个问题

  1. 移动后移除典当。
  2. 一次又一次更换棋子。

这两个问题具有相同的共同根源,即替换某一特定位置上的部件。一种解决方案似乎提供了FEN来封装对象并设置它。

没有在文件里找到任何东西。我想要一些其他优雅的解决方案,在其中,我可以替换一个特定的片段类型,任何建议都会有帮助。

编辑根据实例看,实现对en passant的替换的唯一方法是

代码语言:javascript
复制
// for castling, en passant, pawn promotion
var onSnapEnd = function() {
  board.position(game.fen());// re positioning board by providing FEN
};   

提供board.move("<en passant>")执行移动,但不移除实际位于目标位置前面的典当。

EN

回答 1

Stack Overflow用户

发布于 2020-04-20 13:16:01

要移动任何片段,您必须在初始化chessboard js对象时注册onDrop处理程序。这一职能应返回:

  • 真(布尔值)用于有效移动
  • “垃圾”(字符串)如果你想把掉下来的棋子从棋盘上移除(如用于典当促销)
  • ‘快照’(字符串)如果移动是无效的(将返回到它原来的方格

当您从onDrop返回任何这些值时,板将相应地更新。

请注意,处理促销是很棘手的,因为您需要选择要推广的部分。

任何时候你想要更新董事会(例如一旦用户选择了一个推广项目),只需使用一个新的分,这样做,例如:

代码语言:javascript
复制
board.position(fen);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30764371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档