表示棋盘的最有效方法
Most efficient method to represent chessboard
我有一个用 Java 编写的国际象棋程序。目前我正在使用 2d 字符数组来表示棋盘。大写字符表示白色,小写字符表示黑色。我应该使用字节数组来减少内存使用吗?或者枚举?谢谢。
简而言之:最有效和专业的方法是使用 Bitboards。
基本上,常用的棋盘表示方式有3种:
8x8 二维数组:
速度慢但易于维护
10x12 一维数组:
更快,有点棘手
位板:
它们是最快的方法,也用于 Stockfish 或 Rybka 等专业引擎。基本上,每种图形类型都需要一个 64 位 uint,其中每一位代表一个字段。有关更多信息,我推荐 chessprogramming wiki 或 google=>bitboards.
我有一个用 Java 编写的国际象棋程序。目前我正在使用 2d 字符数组来表示棋盘。大写字符表示白色,小写字符表示黑色。我应该使用字节数组来减少内存使用吗?或者枚举?谢谢。
简而言之:最有效和专业的方法是使用 Bitboards。
基本上,常用的棋盘表示方式有3种:
8x8 二维数组: 速度慢但易于维护
10x12 一维数组: 更快,有点棘手
位板: 它们是最快的方法,也用于 Stockfish 或 Rybka 等专业引擎。基本上,每种图形类型都需要一个 64 位 uint,其中每一位代表一个字段。有关更多信息,我推荐 chessprogramming wiki 或 google=>bitboards.