首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在chessboard.js和chess.js中实现黑白播放

如何在chessboard.js和chess.js中实现黑白播放
EN

Stack Overflow用户
提问于 2018-01-24 18:57:37
回答 2查看 521关注 0票数 0

我如何在chessboard.js和chess.js中运行国际象棋游戏,但只允许白人玩家移动棋子?我需要让它一直是白色的。如果我移动白色边,我想在白色边再走一步。

我想做一个“国际象棋移动游戏”,其中白方应该消除所有的黑色棋子,例如只在5步。这就是为什么我想让白方像在正常游戏中一样玩,但黑方保持静止(永远不会有转弯,没有拖拽)。

EN

回答 2

Stack Overflow用户

发布于 2018-03-27 23:52:08

这个问题更多的是关于chess.js而不是chessboard.js,因为chess.js是您正在使用的国际象棋引擎。

这样做会破坏游戏历史。

首先,您可以覆盖电路板的onDragStart,如下所示:

代码语言:javascript
复制
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.

/*完全未经测试...这将破坏你的游戏状态/历史记录*/函数set_turn(象棋,颜色){ var tokens = chess.fen().split(‘');tokens1 =颜色;chess.load(tokens.join(’'));}

票数 0
EN

Stack Overflow用户

发布于 2020-04-04 06:51:49

我的棋盘JS版本是v.1.0.0。

最好的方法是使用Chessboard.js events

在将配置传递给棋盘对象时(在初始化时),您可以指定回调函数,当棋盘中发生某些事件时将调用这些回调函数。

为了允许/阻止玩家移动棋子,我们需要为onDragStart指定一个回调,并返回一个true值,如果不允许,则返回false。

例如,我们可以检查用户是谁,或者是否打开了任何标志。

此外,还有几个参数传递给onDragStart函数,帮助您决定是否让用户移动该块。

只需返回false以阻止移动,并返回true以允许移动。

例如:

代码语言:javascript
复制
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));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48420773

复制
相关文章

相似问题

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