当编写计算机下棋程序时,我该如何建模棋盘?

28

你会使用哪些数据结构来代表计算机国际象棋程序中的棋盘?


通常被称为董事会报告 - menjaraz
14个回答

0

我实际上不会对棋盘进行建模,而是只会对棋子的位置进行建模。你可以为棋盘设置边界。

Piece.x= x position of piece
Piece.y= y position of piece

4
理论上听起来不错,但在实践中,你必须检查所有其他部分,以确定任何一步棋是否合法。 - David Locke

0
int[8][8]

0=no piece
1=king
2=queen
3=rook
4=knight
5=bishop
6=pawn

请使用正整数表示白色,负整数表示黑色。

0

我知道这是一个非常古老的帖子,每次在谷歌搜索国际象棋编程时都会偶然发现它,但我觉得我必须提到,用一维数组(例如chessboard[64])对棋盘进行建模是完全可行的。

我认为这是最简单的棋盘表示方法...当然,这是一种基本的方法。

一维棋盘数组结构比二维数组更有效率吗?(后者需要嵌套循环来访问和操作索引)

还可以使用一个具有超过64个方格的一维数组来表示OffBoard方格,例如chessboard[120](正确初始化数组哨兵和棋盘游戏方格)。

最后,为了完整起见,我再次提到0x88棋盘数组表示法。这是一种相当流行的表示棋盘的方式,也考虑了OffBoard方格。


-4

使用数组可能会很好。如果您想要更方便的“遍历”棋盘的方法,可以轻松构建抽象数据结构实现细节的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接