9得票4回答
在Eclipse中使用Java显示国际标准码编码的棋子

我想在Java中使用Eclipse显示一些Unicode象棋符号,但它只打印出随机的矩形,除非国际象棋棋子最近发生了根本性的变化 - 我不认为这是我想要的。非常感谢您的帮助! 我的代码: import java.io.PrintStream; import java.io.Unsuppor...

10得票7回答
确定两个国际象棋局面是否相等。

我正在调试一个棋类变体引擎的转置表,其中棋子可以放置(即原本不在棋盘上)。我需要知道我有多少次键冲突。我在每个表索引中保存棋子列表,以及通常的哈希数据。我的简单解决方案用于确定两个位置是否相等,但由于我正在线性比较两个棋子列表,因此在转置时会失败。 请不要建议我应该按照面向棋盘而不是面向棋子...

11得票2回答
Alpha-Beta算法中的漏洞:Chess

我正在实现一个国际象棋引擎,已经编写了一个相当复杂的alpha-beta搜索程序,包含静态搜索和置换表。但是,我发现了一个奇怪的错误。 评估函数使用棋子位置表,例如这个兵的表: static int ptable_pawn[64] = { 0, 0, 0, 0, 0, ...

24得票12回答
国际象棋优化

好的,我已经在开发我的国际象棋程序一段时间了,但现在遇到了瓶颈。我已经完成了所有标准优化(negascout、迭代加深、杀手着法、历史启发式、静态搜索、兵的位置评估和一些搜索扩展),但是现在已经没有想法了! 我很快就要把它变成多线程,这应该可以提高性能,但除此之外,你们有没有其他巧妙的技巧?...

10得票3回答
棋子未来的移动方式

我正在使用C#开发一款国际象棋引擎,但在编写代码以确定任何给定棋子在1、2和3步内的未来移动时遇到了一些问题。基本想法是奖励具有更高移动性的棋子,并处罚那些移动性较差的棋子。 棋盘由一个包含64个方格的数组表示,从0(a8)到63(h1),例如: Piece[] _chessboard =...

13得票9回答
高效存储棋局位置

我已经阅读了大量与此问题相关的网络信息,但仍未找到明确的答案。 我的目标是建立一个国际象棋棋局数据库,能够识别移位(通常是哪些棋子在哪些位置)。 编辑:它还应该能够识别相似(但不完全相同)的棋局。 这是一个20年前的讨论(当时空间是个问题):https://groups.google.c...

7得票3回答
有一个空方法是可以的吗?

在子类中覆盖一个空方法,这样做是否可行?以下是示例代码。 public class Rook() { public void voidCastleRight() { } } public class ShortRook() extends Rook { @Overri...

15得票4回答
7得票1回答
如何在不引入锁的情况下使并发读取和修改数组的代码定义良好?

我正在编写一个计算国际象棋变体 endgame tablebase 的程序。填充表格的算法如下: 从一个巨大的unsigned char数组开始,每个成员代表一个位置(我们总是假设这是白方的回合)。如果该位置已输,则数组成员为偶数,如果已赢,则为奇数,如果无效,则为0xff,如果是平局,则...

10得票4回答
从Python的PGN文件中提取棋谱信息

我该如何在Python中从pgn文件中提取棋谱信息?作为一个编程新手,任何帮助都将不胜感激。