在使用 chessboard.js 和 chess.js(运行实际游戏规则的引擎)创建类似的多人国际象棋游戏时,我遇到了同样的问题
答案在 chessboard.js api 文档中引用的 chess.js 文件中。
chess.js 的第 157 行有这个:
var turn = WHITE;
如果你想改变整个游戏的回合,你可以这样做:
turn = BLACK;
turn = WHITE;
turn = "w";
turn = "b";
其中任何一个都可以。我还创建了一个方便的函数,它可以更容易地被其他脚本使用,它将 setTurn() 和 turn() 添加到公共 API..
添加到 API 以进行转弯操作的便利功能:
在 chess.js (not chessboard.js) 的第 1115 行附近,你会发现一个函数以:
开头
return {
/***************************************************************************
* PUBLIC CONSTANTS (is there a better way to do this?)
**************************************************************************
我只是在评论的正下方添加了以下内容:
turn: function() {
return turn;
},
setTurn: function(newTurn) {
turn = newTurn;
},
结果是现在来自 chess.js 的任何一个实例
(默认名称是game),你可以像这样简单地改变转弯:
game.setTurn("b");
game.setTurn("w");
这只是我在制作多人游戏版本时遇到的一个障碍。您可能面临的下一个障碍是:如果玩家断开连接或没有响应会发生什么?如果他们将一个JS文件注入到允许他们随意改变轮次的页面中呢?这些问题将更难以解决。还要注意其他类型的注入攻击,例如从外部操纵游戏 FEN。
祝你好运!
如果您希望我分享我的源代码,请留下评论——我发现了 chessboard.js 作为多人游戏时出现的大部分问题。