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

  • 时间:
  • 浏览:68

  太阳鱼

  太阳鱼是一个简单但强大的国际象棋引擎,用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入门学习资料,关注,转发,私信小编“01”即可免费获取!

  特征

  建立在简单,但致命有效的MTD-bi搜索算法周围。

  充满了经典的和现代的“象棋引擎技巧”,为更简单和更快的代码。

  易于自适应的评估功能,通过片方表。

  使用标准Python集合和数据结构来提高清晰度和效率。

  局限性

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

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

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

  为什么是太阳鱼?

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

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

猜你喜欢