表示棋盘的最有效方法

Most efficient method to represent chessboard

我有一个用 Java 编写的国际象棋程序。目前我正在使用 2d 字符数组来表示棋盘。大写字符表示白色,小写字符表示黑色。我应该使用字节数组来减少内存使用吗?或者枚举?谢谢。

简而言之:最有效和专业的方法是使用 Bitboards。

基本上,常用的棋盘表示方式有3种:

  • 8x8 二维数组: 速度慢但易于维护

  • 10x12 一维数组: 更快,有点棘手

  • 位板: 它们是最快的方法,也用于 Stockfish 或 Rybka 等专业引擎。基本上,每种图形类型都需要一个 64 位 uint,其中每一位代表一个字段。有关更多信息,我推荐 chessprogramming wiki 或 google=>bitboards.