问题标签 [python-chess]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
163 浏览

python - 如何在python-chess中获得白棋的获胜机会

所以我开始制作多人国际象棋游戏。现在,因为它是一个图形用户界面,所以我在左侧有棋盘,在右侧,有一个分析区域。

现在,我希望我的分析区域显示用户的获胜机会。

假设有一个方形块,里面有两个矩形。现在,他们都代表50-50的机会。每次移动后,我想用当前的机会更新它。那么我怎样才能得到一个呢?

我可以Cp返回一个类,但它显示了机会的准确性(我猜)。

如果有人玩过chess.com,我想你可以理解我想要得到什么:D

0 投票
1 回答
226 浏览

python - python-chess:ModuleNotFoundError:没有名为“chess.uci”的模块

我正在尝试运行一个需要模块 chess 和 chess.uci的程序。

我执行“py -m pip install chess”,但收到错误消息

文件“D:\Pythonfiler\sjakk\PySimpleGUI\Chess\Demo_Chess_AGAINST_AI.py”,第 7 行,在 import chess.uci ModuleNotFoundError: No module named 'chess.uci'

有人知道我能做什么吗?或者我做错了什么?

0 投票
1 回答
173 浏览

python - 国际象棋引擎的移动排序

我的 Python 编程项目的第 3 部分。在这里找到它。

自从上一篇文章以来,我已经设法计算出转置表并开始创建移动排序函数。

移动功能首先检查打开的书籍中是否有移动,如果没有,则执行移动排序功能,最后如果没有找到移动,则计算该位置的最佳移动。

这是我到目前为止所拥有的:

orderMoves 函数在当前位置检查 3 个不同的东西:

  1. negamax 函数 - 搜索转置表
  2. 导致将死的动作
  3. 赢得材料的捕获

.

negamax 函数通过存储和查找以前存储的哈希值来工作。

实现此功能可能有更好的方法,但这是我能做到的最好的方法。在运行代码几个小时对此进行测试后,结果与我没有移动排序时的结果相同。24 个测试位置中有 7 个是正确的。

我可以进行哪些更改来获得更清洁的实施并使其正常工作?

0 投票
1 回答
105 浏览

python - Python-chess:模块“chess.engine”没有属性“SimpleEngine”

这是一个更大项目的一部分,但我创建了一个新文件来解决这个问题。对不起,我还是编码新手。目前,我正在尝试对国际象棋中的位置进行鱼评估,但是每当我尝试运行代码时,我都会得到“AttributeError:模块'chess.engine'没有属性'SimpleEngine'”我已经查看了互联网并且可以'什么都找不到,我是不是很笨?我也尝试了文档中的代码,但仍然遇到相同的错误。这是文档中的代码:

0 投票
1 回答
102 浏览

python - Errno 8 执行格式错误 - Stockfish/python 国际象棋

我正在尝试通过 python chess 访问 Stockfish 评估,但是,每当我尝试运行代码时,都会遇到“[Errno 8] Exec 格式错误”。我尝试从文档中运行一些代码,但遇到了同样的错误。我读了一些文章,他们谈到在可执行代码中添加一个 shebang,但我没有看到其他人需要这样做,或者在文档中对它的任何引用。我真的很笨吗?对不起,我还是编码新手。文档代码如下:

0 投票
1 回答
44 浏览

python - 在 CSV 文件/国际象棋数据库创建中创建多于一行

我正在尝试创建一个数据库来训练基本的机器学习算法。但是,当我运行代码时,它只创建了两行,但我试图为游戏中的每个单独位置创建多行,并在最后对位置进行鱼分析。该代码似乎正在进行三个动作,然后写入文件或覆盖每个动作的文件。我不能说它是哪一个。为了进一步详细说明,下面的示例是我编写的代码的输出,其中 number = 3: 输出代码给了我

但是,我正在寻找这样的东西:

0 1 2 3 4 5 6 7 8
p p
p p
p p

这是我的代码:

0 投票
1 回答
42 浏览

python-3.x - 为什么棋子在 python-chess 中向相反方向移动

我有以下RNBK1B1R/PPPPQPPP/5N2/3pP3/4p1p1/2n2n2/ppp2p1p/r1bkqb1r b由图像识别技术生成的分。此分基于翻转的棋盘,黑色棋子位于底部。当我检查 时legal_moves,我的棋子的轨迹似乎是向后的。有什么方法可以控制我的棋子的方向吗?

这是董事会的图像以及合法的举动-

在此处输入图像描述

打印所有合法动作的快速片段 -

0 投票
1 回答
33 浏览

python - Minimax 返回非法 uci 移动 - 移动生成不更新?

当我使用位置测试我r1bqkbr1/pp2pppp/2n1p2n/2p5/3P4/7N/PPP2PPP/RNBQKB1R w KQq - 3 6的代码时,下面的代码会在运行时输出ValueError: illegal uci: 'd8d7' in r1bqkbr1/pp2pppp/2n1p2n/2p5/3P4/7N/PPP2PPP/RNBQKB1R w KQq - 3 6。问题似乎是在我推动一个新动作之后棋盘没有更新(它仍然会产生合法的动作,认为它是黑色的移动,而实际上它是白色的移动)。我该如何解决?

0 投票
1 回答
37 浏览

python - 国际象棋__init__.py文件中的非常奇怪的错误

我在 python 中导入国际象棋并完成了项目中的所有内容,但是当我单击运行时,我发现文件中有一个非常奇怪的错误__init__.py

错误

0 投票
0 回答
43 浏览

python - While 循环仅在嵌套类中迭代一次

我正在使用 pygame 构建一个国际象棋 gui,其中主游戏循环调用单独类中的一个方法(GameState 类中的移动),然后进一步调用同一类中的另一个方法(pawn_promotion)。在pawn_promotion 方法中,一个表面promotion_menu 被blit 到窗口中。

但它只出现在屏幕上一帧。如果我在这里错了,请纠正我,但我认为正在发生的是表面正在被 blit 但是当游戏循环再次迭代时,它会被棋盘覆盖到窗口上。

我正在使用以下类在表面上创建 4 个按钮

我对这个类还有另一个小问题, set_alpha() 行似乎在每帧增加 alpha 的值,而不是将其设置为常数值。是否有另一个命令可以保持 alpha 不变?

如果我在 pawn_promotion 中使用 while 循环,它可以完美运行,但由于它本质上是两个嵌套的 while 循环,因此会产生很多滞后。我试图通过使用 clock.tick() 来减少这种滞后,但它并没有完全摆脱它。