2012-01-13 116 views
-1

即使在C#实现在Java或C++或定制的迷你码(少广场,少件)国际象棋棋盘实现代码

我只是想帮助制作最好的举动。我不需要任何图形界面。

enter image description here

输入将被给定为

“rnkrrp p p ***** P P PRNKNR”

其中

典当:P

鲁克斯,R

骑士:N

王:K

这里小写字母表示黑色片和大写字母代表白片和 “*” 代表空方

并输出像

A2A3

如果最佳移动从

A2发生在A3

通过应用程序只。一举一动。

在这个没有相互面对是必需的,因为我们给字符串输入直接。

首先我开始理解在java,C++,c#中的8 * 8棋盘编程,但是在某些情况下我会遇到难以理解的问题。

看到的许多源代码正在尝试移动预定义的最佳移动列表。

并没有一个特别的想法来解决这个问题。我想建议开始这个,并解决这个问题。

谢谢。对不起,因为英文不好

+1

这是一个相当广泛的问题。你应该写一个可玩的游戏?用户可以与之交互的GUI界面?计算机是否需要AI?这里涉及多少? – ean5533 2012-01-13 13:44:14

+0

@ ean5533我怀疑你可以使用xboard或winboard作为实际的主板,所以可能只是引擎。 (编辑:实际上他是这么说的 - 第二段)但我不认为一个优化的“最佳动作列表”是一个问题 - 它可能只是用于开口,所以只需忽略它并评估剩下的可用动作在一些明智的指标? – Rup 2012-01-13 13:46:34

+0

对不起,与编程无关,但使用这么多...并没有改善你的问题。 – 2012-01-13 13:51:16

回答

4

您需要研究alpha beta pruning works。有很多关于国际象棋程序设计的文献,我建议你开始from here。作为一个非常小的例子,look at my project here。我指出了一个文件,这是一个寻找最佳举措的测试。我的引擎没有优化,但很简单,足以让它工作。它不介意如果您使用缩小的键盘,算法与您创建适当的移动生成器和键盘评估程序(通常材料值已足够)相同。

+0

以及我正在寻找您的项目。感谢您提供建议。 – 2012-01-13 14:08:37

+0

但我不清楚所有的魔法词(如81行上的那个)真的意味着什么。 – 2015-05-05 00:20:58

+0

@FanZheng没有什么真正的魔力,只是标准的FEN记法:http://en.wikipedia.org/wiki/Forsyth%E2%80%93Edwards_Notation – 2015-05-05 08:50:33