Chess.js中ShortMove已移除,求替代方案及Move使用方法
Chess.js中ShortMove接口替代方案及Move接口正确用法
Chess.js新版本已移除
ShortMove接口,所有走法操作统一使用Move接口。推荐方案:用Chess.js内置方法生成/处理走法,无需手动构造Move对象
完全不需要自己创建Move实例,Chess.js核心方法会直接返回符合接口要求的走法对象:import { Chess } from 'chess.js'; const game = new Chess(); // 获取所有带详细信息的合法走法(Move对象数组) const legalMoves = game.moves({ verbose: true }); // 执行走法,返回执行成功的Move对象 const validMove = game.move('e4');若必须手动构造Move对象,需填充所有必填属性
Move接口必填字段包括:from: 起始格子(如'e2')to: 目标格子(如'e4')color: 棋子颜色('w'白方、'b'黑方)piece: 棋子类型('p'兵、'r'车、'n'马、'b'象、'q'后、'k'王)flags: 走法标记(如'n'普通走法、'c'吃子、'e'吃过路兵)san: 标准代数记谱(如'e4')
适配ChessboardJSX的走法处理示例
在落子回调中直接用格子位置字符串生成走法,无需手动构造对象:const onDrop = ({ sourceSquare, targetSquare }) => { // 尝试执行走法,自动生成符合要求的Move对象 const move = game.move({ from: sourceSquare, to: targetSquare, promotion: 'q' // 可选,指定升变棋子,默认升变为后 }); // 走法不合法时返回false,还原棋盘 if (!move) return false; // 更新棋盘状态 setPosition(game.fen()); return true; };
内容的提问来源于stack exchange,提问作者Gabriel Eidelman
相关产品推荐
相关产品推荐

