我如何在chessboard.js和chess.js中运行国际象棋游戏,但只允许白人玩家移动棋子?我需要让它一直是白色的。如果我移动白色边,我想在白色边再走一步。
我想做一个“国际象棋移动游戏”,其中白方应该消除所有的黑色棋子,例如只在5步。这就是为什么我想让白方像在正常游戏中一样玩,但黑方保持静止(永远不会有转弯,没有拖拽)。
发布于 2018-03-27 23:52:08
这个问题更多的是关于chess.js而不是chessboard.js,因为chess.js是您正在使用的国际象棋引擎。
这样做会破坏游戏历史。
首先,您可以覆盖电路板的onDragStart,如下所示:
var onDragStart = function(source, piece, position, orientation) {
// if it's not white, don't allow drag
if (piece.search(/^w/) === -1) ||
return false;
}
};
var cfg = {
draggable: true,
position: 'start',
onDragStart: onDragStart
};
var board = ChessBoard('board', cfg);第二,你必须强行转弯。
如果你在FEN中重新加载游戏,并将FEN设置为W,你会得到你想要的behavior.
chess.js的源代码,https://github.com/jhlywa/chess.js/issues/62就像这个问题一样。作者发布了这段代码,或者在这里:/*完全未经测试...这将破坏你的游戏状态/历史记录*/函数set_turn(象棋,颜色){ var tokens = chess.fen().split(‘');tokens1 =颜色;chess.load(tokens.join(’'));}
发布于 2020-04-04 06:51:49
我的棋盘JS版本是v.1.0.0。
最好的方法是使用Chessboard.js events。
在将配置传递给棋盘对象时(在初始化时),您可以指定回调函数,当棋盘中发生某些事件时将调用这些回调函数。
为了允许/阻止玩家移动棋子,我们需要为onDragStart指定一个回调,并返回一个true值,如果不允许,则返回false。
例如,我们可以检查用户是谁,或者是否打开了任何标志。
此外,还有几个参数传递给onDragStart函数,帮助您决定是否让用户移动该块。
只需返回false以阻止移动,并返回true以允许移动。
例如:
const chessboardConfig = {
position: 'start',
draggable: true,
onDragStart: onDragStart,
};
// Create chessboard and chess obj
const board = window.Chessboard('elementDomID', chessboardConfig);
function onDragStart(source, piece, position, orientation) {
// Validate side moving piece
return !((orientation === 'white' && piece.search(/^w/) === -1) ||
(orientation === 'black' && piece.search(/^b/) === -1));
}https://stackoverflow.com/questions/48420773
复制相似问题