本篇简要介绍,在中国象棋程序中,容纳棋子的棋子点。
由于棋子位于棋盘中,为了方便讲解本篇,需要先简要介绍下棋盘的结构。
棋盘的结构
// 棋子点,共90个,横9*纵10
public ChessPoint chessPoints[][];
棋盘由90个点组成。(后续文章,将详细介绍棋盘)
棋子点
每一个正常的棋子都位于棋盘上的一个点,棋子点就是一个棋子的“小窝”。
这个点有坐标(x,y),并且存放着棋子的引用。
public class ChessPoint{ /** * 棋子点的物理坐标-x轴 */ private int x; /** * 棋子点的物理坐标-y轴 */ private int y; /** * 棋子的引用 */ private ChessPiece piece; /** * 这个点是否存在棋子 * @return 存在,返回<code>true</code>;否则,返回<code>fasle</code> */ public boolean hasPiece() { return piece != null; } public void setHasPiece(boolean hasPiece) { // 很重要 if (!hasPiece) { piece = null; } } public Point getPoint() { return new Point(x, y); } }
初始化
// 初始化棋子点 chessPoints = new ChessPoint[X + 1][Y + 1]; for (int i = 1; i <= X; i++) { for (int j = 1; j <= Y; j++) { chessPoints[i][j] = new ChessPoint(i * UNIT_WIDTH, j * UNIT_HEIGHT); } }
相关常量
// 棋盘的水平方向可容纳棋子的点的个数
public static final int X = 9;
// 棋盘的垂直方向可容纳棋子的点的个数
public static final int Y = 10;
// 棋盘单元格的宽度
public static int UNIT_WIDTH = ChessPiece.UNIT_WIDTH;
// 棋盘单元格的高度
public static int UNIT_HEIGHT = ChessPiece.UNIT_HEIGHT;
更多细节,我们将在讲解棋盘等相关章节的时候,进一步介绍ChessPoint。
特别说明
棋子点的坐标和棋子的坐标是不同的。
棋子在棋盘中的坐标,Point类型。 坐标范围 {(x,y)| 1<=x<=9,1<=y<=10}
棋子点在棋盘中的坐标,坐标范围 {(x,y)| 1*UNIT_WIDTH<=x<=9*UNIT_WIDTH,1*UNIT_HEIGHT<=y<=10*UNIT_HEIGHT}
相关阅读
中国象棋程序的设计与实现(零)--原始版源码
中国象棋程序的设计与实现(一)--项目截图
中国象棋程序的设计与实现(二)--源码
中国象棋程序的设计与实现(三)--2012本科毕业论文等重要文档资料
中国象棋程序的设计与实现(四)-- 一次“流产”的写书计划
中国象棋程序的设计与实现(五)--回答CSDN读者的一些问题
中国象棋程序的设计与实现(六)--N皇后问题的算法设计与实现(源码+注释+截图)
中国象棋程序的设计与实现(七)--心得体会和开发日志
未来计划
未来3个月到1年,我将尽快把中国象棋-楚汉棋兵系列,全部写完。
觉得还不错的,帮我“顶”啊!