表示棋盘的最有效方法

use*_*535 5 java chess

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

xXl*_*uXx 6

简而言之:最高效、最专业的方式是使用 Bitboards。

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

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

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

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

  • 基本上,是的。我仍然建议制作一个类或一个结构棋盘,以将位板干净地保持在一起。并尽可能尝试使用静态方法和类,它会产生另一个性能增益。 (2认同)