一个简单但强大的国际象棋引擎,用Python编写

太阳鱼

太阳鱼是一个简单但强大的国际象棋引擎,用Python编写,主要用于教学目的。没有表格和它简单的界面,它只需要111行代码!

因为Sunfish很小,并且力求简单,所以代码为实验提供了一个很好的平台。人们用它来测试并行搜索算法,实验评估功能,开发深入学习的国际象棋程序。今天分叉,看看你能做什么!

截图

My move: g8f6
 8 ♖ ♘ ♗ ♕ ♔ ♗ · ♖
 7 ♙ ♙ ♙ ♙ ♙ ♙ ♙ ♙
 6 · · · · · ♘ · ·
 5 · · · · · · · ·
 4 · · · · ♟ · · ·
 3 · · · · · · · ·
 2 ♟ ♟ ♟ ♟ · ♟ ♟ ♟
 1 ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜
 a b c d e f g h
Your move:

快跑!

太阳鱼是自含在sunfish.py存储库中的文件。我建议用pypy或pypy3为了最佳的性能。

还可以使用图形界面运行Sunfish,如皮切 , 竞技场或者你选择的国际象棋界面。太阳鱼可以通过Xboard命令/CECP协议pypy -u xboard.py..鲁西·西尔维卡关于使它在Windows上工作的注意事项 .

这是小编准备的python入门学习资料,加群:1007333442即可免费获取!

一个简单但强大的国际象棋引擎,用Python编写

特征

  1. 建立在简单,但致命有效的MTD-bi搜索算法周围。
  2. 充满了经典的和现代的“象棋引擎技巧”,为更简单和更快的代码。
  3. 易于自适应的评估功能,通过片方表。
  4. 使用标准Python集合和数据结构来提高清晰度和效率。

局限性

太阳鱼支持抛弃,传递和推广。然而,它不做小的推广或抽签通过重复。所有输入都必须用简单的“两个坐标”符号来完成,如屏幕截图所示。

有很多方法可以让太阳鱼更强壮。首先,可以将表示法改为可变数组,并添加一种快速枚举片段的方法。然后,您可以实现专门的捕获生成、检查检测和检查规避。您还可以将所有内容移动到位板,在C中实现部分代码,或者进行并行搜索的实验!

让太阳鱼更强壮的另一个方法是让它更多地了解国际象棋。目前的评估功能只使用片方表-它甚至没有区分游戏中和游戏结束。您还可以尝试更多的剪枝-目前只完成空移动-并且扩展-目前没有使用。最后,太阳鱼可能会受益于更先进的移动订购,MVV/LVA,看到了吗?

为什么是太阳鱼?

“太阳鱼”这个名字实际上指的是侏儒太阳鱼,这是以字母“Py”开头的少数几条鱼之一。使用鱼的精神是伟大的引擎,如斯托克菲什,扎帕和雷布卡。

在遗产方面,太阳鱼借用的更多。格尔特·穆勒(Geert Muller)皮切 .

一个简单但强大的国际象棋引擎,用Python编写

猜你喜欢

转载自blog.csdn.net/weixin_44138053/article/details/90769161