问题标签 [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.
python - 如何在python-chess中获得白棋的获胜机会
所以我开始制作多人国际象棋游戏。现在,因为它是一个图形用户界面,所以我在左侧有棋盘,在右侧,有一个分析区域。
现在,我希望我的分析区域显示用户的获胜机会。
假设有一个方形块,里面有两个矩形。现在,他们都代表50-50的机会。每次移动后,我想用当前的机会更新它。那么我怎样才能得到一个呢?
我可以Cp
返回一个类,但它显示了机会的准确性(我猜)。
如果有人玩过chess.com,我想你可以理解我想要得到什么:D
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'
有人知道我能做什么吗?或者我做错了什么?
python - 国际象棋引擎的移动排序
我的 Python 编程项目的第 3 部分。在这里找到它。
自从上一篇文章以来,我已经设法计算出转置表并开始创建移动排序函数。
移动功能首先检查打开的书籍中是否有移动,如果没有,则执行移动排序功能,最后如果没有找到移动,则计算该位置的最佳移动。
这是我到目前为止所拥有的:
orderMoves 函数在当前位置检查 3 个不同的东西:
- negamax 函数 - 搜索转置表
- 导致将死的动作
- 赢得材料的捕获
.
negamax 函数通过存储和查找以前存储的哈希值来工作。
实现此功能可能有更好的方法,但这是我能做到的最好的方法。在运行代码几个小时对此进行测试后,结果与我没有移动排序时的结果相同。24 个测试位置中有 7 个是正确的。
我可以进行哪些更改来获得更清洁的实施并使其正常工作?
python - Python-chess:模块“chess.engine”没有属性“SimpleEngine”
这是一个更大项目的一部分,但我创建了一个新文件来解决这个问题。对不起,我还是编码新手。目前,我正在尝试对国际象棋中的位置进行鱼评估,但是每当我尝试运行代码时,我都会得到“AttributeError:模块'chess.engine'没有属性'SimpleEngine'”我已经查看了互联网并且可以'什么都找不到,我是不是很笨?我也尝试了文档中的代码,但仍然遇到相同的错误。这是文档中的代码:
python - Errno 8 执行格式错误 - Stockfish/python 国际象棋
我正在尝试通过 python chess 访问 Stockfish 评估,但是,每当我尝试运行代码时,都会遇到“[Errno 8] Exec 格式错误”。我尝试从文档中运行一些代码,但遇到了同样的错误。我读了一些文章,他们谈到在可执行代码中添加一个 shebang,但我没有看到其他人需要这样做,或者在文档中对它的任何引用。我真的很笨吗?对不起,我还是编码新手。文档代码如下:
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
。问题似乎是在我推动一个新动作之后棋盘没有更新(它仍然会产生合法的动作,认为它是黑色的移动,而实际上它是白色的移动)。我该如何解决?
python - 国际象棋__init__.py文件中的非常奇怪的错误
我在 python 中导入国际象棋并完成了项目中的所有内容,但是当我单击运行时,我发现文件中有一个非常奇怪的错误__init__.py
错误
python - While 循环仅在嵌套类中迭代一次
我正在使用 pygame 构建一个国际象棋 gui,其中主游戏循环调用单独类中的一个方法(GameState 类中的移动),然后进一步调用同一类中的另一个方法(pawn_promotion)。在pawn_promotion 方法中,一个表面promotion_menu 被blit 到窗口中。
但它只出现在屏幕上一帧。如果我在这里错了,请纠正我,但我认为正在发生的是表面正在被 blit 但是当游戏循环再次迭代时,它会被棋盘覆盖到窗口上。
我正在使用以下类在表面上创建 4 个按钮
我对这个类还有另一个小问题, set_alpha() 行似乎在每帧增加 alpha 的值,而不是将其设置为常数值。是否有另一个命令可以保持 alpha 不变?
如果我在 pawn_promotion 中使用 while 循环,它可以完美运行,但由于它本质上是两个嵌套的 while 循环,因此会产生很多滞后。我试图通过使用 clock.tick() 来减少这种滞后,但它并没有完全摆脱它。