【问题标题】:How to freez black and allow to play white in chessboard.js and chess.js如何在 chessboard.js 和 chess.js 中冻结黑色并允许播放白色
【发布时间】:2018-01-24 10:57:36
【问题描述】:

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

我想制作一个“棋步游戏”,其中白方应消灭所有黑方,例如仅在 5 步中。这就是为什么我想让白方像正常游戏一样玩,但黑方保持静止(永远不要转弯,不可拖动)。

【问题讨论】:

    标签: chessboard.js


    【解决方案1】:

    这个问题比chessboard.js 更关注chess.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);
    

    其次,你必须强制转弯。

    1. 如果您通过在 FEN 中占据位置并load将 FEN 发送到棋盘并将要移动的一侧设置为 W 来重新加载游戏,您将获得您想要的行为。

      李>
    2. 您可以稍微编辑chess.js 的来源,https://github.com/jhlywa/chess.js/issues/62 就像在那个问题中一样。作者发布了这个 sn-p 或在这里:

      /* totally untested ... this will blow your game state/history  */
      function set_turn(chess, color) {
          var tokens = chess.fen().split(' ');
          tokens[1] = color;
          chess.load(tokens.join(' '));
       }
      

    【讨论】:

      【解决方案2】:

      我的 Chessboard JS 版本是 v.1.0.0。

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

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

      为了允许/阻止玩家移动棋子,我们需要为 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));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-20
        • 2016-06-11
        • 1970-01-01
        • 2020-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多