chess 相关问题

这个标签用于国际象棋游戏和让计算机玩它的问题。

使用Python国际象棋库时的奇怪错误,在set.fen()和push(move)之后,board.legel_moves生成错误的棋步

我正在用Python国际象棋库编写一个小型国际象棋GUI。昨天,我运行了我的代码很多次,没有任何问题。然后我安装了一些其他的Python库。今天我发现一个奇怪的错误:

回答 1 投票 0

使用python-chess从PGN评论中提取非标准评估分数

我有一个 PGN 文件,它是 Cute Chess 的输出。 1. e4 {+0.42/27 1.6s} e5 {-0.21/26 5.4s} 2. Nf3 {+0.34/22 0.94s} Nc6 {-0.16/19 0.37s} 3. Bb5 {+0.35/27 2.1s} Nf6 {-0.19/26 0.80s} 4. O-O {+0.3...

回答 3 投票 0

如何使用 python chess.pgn.read_game 函数提取 PGN 文件中的分数

PGN 的分数如下: 1. e4 {+0.42/27 1.6s} e5 {-0.21/26 5.4s} 2. Nf3 {+0.34/22 0.94s} Nc6 {-0.16/19 0.37s} 3. Bb5 {+0.35/27 2.1s} Nf6 {-0.19/26 0.80s} 4. O-O {+0.33/22 0.56s} Nxe4 {-0.16/26...

回答 1 投票 0

当双方玩家都断开连接时处理未完成的国际象棋游戏的方法

我需要弄清楚如果两个玩家都没有完成游戏就离开游戏该怎么办。在这种情况下,我需要一个解决方案来保留当前的游戏状态并确定何时应该考虑游戏......

回答 1 投票 0

我的棋盘没有颜色,如何为棋盘的方框或空格添加颜色?

我正在制作一个国际象棋游戏,atm我正在制作一个棋盘,正要完成时我意识到它没有颜色并且就像...... “如何添加颜色?” 这是代码,在哪里以及如何...

回答 1 投票 0

从 pgn 解析动作

我有一项服务,可以从数据库获取游戏并向其添加动作。此外,它还编辑当前的 pgn(动作字符串)。是否有任何函数可以获取给定的动作字符串并解析来自...的动作

回答 1 投票 0

如何在c++中初始化位板?

我已经仔细研究了位板上的国际象棋编程维基,但我仍然在努力思考如何实际创建它们。根据我收集的信息,它们应该是 uint64_t 对吗?

回答 2 投票 0

提高 OpenCV 中模板匹配的性能

我目前正在使用 OpenCV 用 python 编写一个项目,旨在识别屏幕上棋盘上棋子的位置。 我已经成功地使用了模板匹配功能...

回答 2 投票 0

我无法弄清楚程序 perftree 的输出有什么问题

我正在构建一个国际象棋引擎,我正在尝试使用我之前使用过的名为 perftree 的程序来测试它。为了让 perftree 能够使用我的代码,我需要以某种方式格式化我的输出。

回答 1 投票 0

如何提高 Chess.js 的 Minimax 性能?

我正在尝试使用 Chess.js 和 Chessboard.js 使用 Minimax 算法和 alpha-beta 修剪来编写国际象棋引擎。问题是该算法需要很长时间才能执行所有

回答 2 投票 0

如何使用 ppo 加快 python 国际象棋机器人的训练时间?

我正在尝试构建一个使用近端策略优化进行学习的国际象棋机器人。我目前正在使用 python-chess 库(https://python-chess.readthedocs.io/en/latest/index.html#)作为

回答 1 投票 0

将 Stockfish 实现到 Unity 中

我真的很努力将stockfish 与c# 实现统一,我见过很多人使用标准输入来读取stockfish。不过,无论我做什么,我的程序都会冻结。 (对...

回答 1 投票 0

位图计算中的位移似乎不起作用

我有一个 CLI 国际象棋程序,它接收用户的输入(例如:'e2e4')并将其转换为两个位图,即 s_map 和 e_map。 位图表示为 0x0000000000000000ULL; 右边在哪里...

回答 1 投票 0

如果操作 stdin 和 stdout,Python subprocess.popen 会死锁?

我编写了一个脚本来操作国际象棋引擎的标准输入和标准输出。基本上,我使用 subprocess.popen 打开程序,并使用 threading.Thread 操作每个输入和输出。 但是,如果...

回答 1 投票 0

我如何为我的国际象棋游戏代码添加快退按钮? C++

我正在用 C++ 做一个国际象棋小项目作为我的家庭作业。问题是我不知道如何复制我最后一步的动态数组(例如白棋做了一个非法的动作,但有一个

回答 1 投票 0

UseState 不会更新组件各处的值

我正在尝试构建一个 React Web 应用程序,让人们能够解决国际象棋难题。我使用 chessground 库来渲染棋盘,并使用 chess.js 库来处理国际象棋逻辑。 我创建了一个组件

回答 1 投票 0

国际象棋中的将死检查

我正在使用这种面向对象的国际象棋设计。我已经实现了为所有棋子生成有效的动作。现在我正在尝试实施检查将死。 我尝试制定一种方法,如果

回答 2 投票 0

我正在 Unity 2D 中创建国际象棋游戏,但移动板出现问题。似乎无法让它们进入正确的位置和对齐

我从一开始就做所有事情,所有功能都正常工作,但应该突出显示可能的移动的 MovePlates 的位置没有正确对齐......

回答 1 投票 0

如何将 Html 中的 Stockfish 与 chess.js 和 chessboard.js 集成?

这只是一个有趣的项目,但我无法让鳕鱼在我移动后移动。 这只是一个有趣的项目,但我无法让鳕鱼在我移动后移动。 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <title>Chessboard.js Example - Stockfish vs Human</title> <link rel="stylesheet" href="chessboard.css"> </head> <body> <style type="text/css"> .highlight-white { box-shadow: inset 0 0 3px 3px rgb(181, 243, 181); } .highlight-black { box-shadow: inset 0 0 3px 3px rgb(62, 177, 192); } </style> <div id="myBoard" style="width: 400px"></div> <script src="../jquery.js"></script> <script src="chessboard.js"></script> <script src="chess.js"></script> <script src="stockfish.js"></script> <!-- Include the Stockfish JavaScript file --> <script> var board = null; var $board = $('#myBoard'); var game = new Chess(); var squareToHighlight = null; var squareClass = 'square-55d63'; var stockfish; function removeHighlights(color) { $board.find('.' + squareClass).removeClass('highlight-' + color); } function onDragStart(source, piece, position, orientation) { // do not pick up pieces if the game is over if (game.game_over()) return false; // only pick up pieces for White if (piece.search(/^b/) !== -1) return false; } // Initialize Stockfish stockfish = new Worker('stockfish.js'); stockfish.postMessage('uci'); stockfish.postMessage('isready'); stockfish.postMessage('ucinewgame'); function makeStockfishMove() { stockfish.postMessage('position fen ' + game.fen()); stockfish.postMessage('go depth 5'); } // Handle Stockfish's response stockfish.onmessage = function (event) { var line = event.data; if (line.startsWith('bestmove')) { var move = line.match(/bestmove (.+)/)[1]; game.ugly_move(move); board.position(game.fen()); // Highlight the opponent's move removeHighlights('black'); squareToHighlight = move.substring(0, 2); $board.find('.square-' + squareToHighlight).addClass('highlight-black'); // Check if the game is over if (game.game_over()) { alert('Game over'); } } }; function onDrop(source, target) { // see if the move is legal var move = game.move({ from: source, to: target, promotion: 'q' // NOTE: always promote to a queen for example simplicity }); // illegal move if (move === null) return 'snapback'; // highlight white's move removeHighlights('white'); $board.find('.square-' + source).addClass('highlight-white'); $board.find('.square-' + target).addClass('highlight-white'); // Make Stockfish move after a short delay window.setTimeout(makeStockfishMove, 250); } function onMoveEnd() { $board.find('.square-' + squareToHighlight).addClass('highlight-black'); } // update the board position after the piece snap // for castling, en passant, pawn promotion function onSnapEnd() { board.position(game.fen()); } var config = { draggable: true, position: 'start', onDragStart: onDragStart, onDrop: onDrop, onMoveEnd: onMoveEnd, onSnapEnd: onSnapEnd }; board = Chessboard('myBoard', config); </script> </body> </html> 如果是正确的,我很可能会在比赛中被击败,但它甚至不会出手。除了 chess.js 文件之外,我还使用了 chessboard.js、stockfish.js。我希望这段代码至少能够运行并随后击败我。 图片是我运行这段代码时的情况。目前,第一个行动始终是我。请专业人士帮助我解决这个问题。 这对我有用。我使用了这里的编译版本:https://github.com/lichess-org/stockfish.js import { Chess } from 'https://cdnjs.cloudflare.com/ajax/libs/chess.js/0.13.4/chess.js'; var game = new Chess() var board = null var $status = $('#status') var $fen = $('#fen') var $pgn = $('#pgn') var wasmSupported = typeof WebAssembly === 'object' && WebAssembly.validate(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00)); var stockfish = new Worker(wasmSupported ? 'stockfish.wasm.js' : 'stockfish.js'); document.getElementById('board').addEventListener('touchmove', function(e) { e.preventDefault(); // Prevent the default scrolling behavior }, { passive: false }); stockfish.addEventListener('message', function(e) { if (e.data.startsWith('bestmove')) { var bestMove = e.data.split(' ')[1]; game.move({ from: bestMove.slice(0, 2), to: bestMove.slice(2, 4), promotion: 'q' }); board.position(game.fen()); updateStatus(); } }); function onDragStart (source, piece, position, orientation) { // do not pick up pieces if the game is over if (game.game_over()) return false // only pick up pieces for the side to move if ((game.turn() === 'w' && piece.search(/^b/) !== -1) || (game.turn() === 'b' && piece.search(/^w/) !== -1)) { return false } } function onDrop (source, target) { // see if the move is legal var move = game.move({ from: source, to: target, promotion: 'q' // NOTE: always promote to a queen for example simplicity }) // illegal move if (move === null) return 'snapback' updateStatus() stockfish.postMessage('position fen ' + game.fen()); stockfish.postMessage('go depth 15'); } // update the board position after the piece snap // for castling, en passant, pawn promotion function onSnapEnd () { board.position(game.fen()) } function updateStatus () { var status = '' var moveColor = 'White' if (game.turn() === 'b') { moveColor = 'Black' } // checkmate? if (game.in_checkmate()) { status = 'Game over, ' + moveColor + ' is in checkmate.' } // draw? else if (game.in_draw()) { status = 'Game over, drawn position' } // game still on else { status = moveColor + ' to move' // check? if (game.in_check()) { status += ', ' + moveColor + ' is in check' } } $status.html(status) $fen.html(game.fen()) $pgn.html(game.pgn()) } var config = { draggable: true, position: 'start', onDragStart: onDragStart, onDrop: onDrop, onSnapEnd: onSnapEnd, pieceTheme: 'img/chesspieces/wikipedia/{piece}.png' } board = Chessboard('board', config) updateStatus()

回答 1 投票 0

如何防止使用我的合法变量而不使用 chess.js 库发生移动

我做了一个合法的变量来知道一个动作是否合法,但我想在将来修改它,而不仅仅是依赖于正常的国际象棋规则,还想要一种方法来阻止该动作进行。 导入 { useState }

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.