文档章节

中国象棋程序的设计与实现(九)–棋子点,棋子的小窝

FansUnion
 FansUnion
发布于 2015/10/22 10:29
字数 735
阅读 10
收藏 0

本篇简要介绍,在中国象棋程序中,容纳棋子的棋子点。

由于棋子位于棋盘中,为了方便讲解本篇,需要先简要介绍下棋盘的结构。

棋盘的结构

// 棋子点,共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年,我将尽快把中国象棋-楚汉棋兵系列,全部写完。

觉得还不错的,帮我“顶”啊!

原文参见http://FansUnion.cn/articles/1914

版权声明:本文为博主原创文章,未经博主允许不得转载。

© 著作权归作者所有

共有 人打赏支持
FansUnion
粉丝 57
博文 858
码字总数 825464
作品 0
丰台
高级程序员
私信 提问

暂无文章

给女朋友讲解什么是Optional【JDK 8特性】

前言 只有光头才能变强 前两天带女朋友去图书馆了,随手就给她来了一本《与孩子一起学编程》的书,于是今天就给女朋友讲解一下什么是Optional类。 至于她能不能看懂,那肯定是看不懂的。(学到...

Java3y
11分钟前
0
0
2019年六大新兴信息安全方向

导读 黑客攻击和网络犯罪的威胁正在不断升级,相应的技术“军备竞赛”正愈演愈烈,对于信息安全从业人员来说,掌握最新的信息安全工具,是在信息安全战争中生存下来的关键所在。 从特朗普的手...

问题终结者
17分钟前
0
0
redis扩展-自定义PropertyPlaceholderConfigurer,在spring属性注入之前,手动将properteis合并到spring容器中

背景:spring容器启动过程中,通过PropertyPlaceholderConfigurer读取properties配置文件,并将properties配置文件中的值注入spring bean的属性中, PropertyPlaceholderConfigurer使用方式多...

燃犀
19分钟前
0
0
PostgreSQL SPI 中的错误处理

PostgreSQL SPI 用于在 C 或是其他编程语言编写的扩展函数(存储过程)中调用数据库本身的解析器、规划器和执行器的功能,以及对 SQL 语句进行执行。 在最重要的一个函数 SPI_execute 的文档...

helloclia
20分钟前
0
0
深入理解Java内存模型

1 内存模型产生背景 在介绍Java内存模型之前,我们先了解一下物理计算机中的并发问题,理解这些问题可以搞清楚内存模型产生的背景。物理机遇到的并发问题与虚拟机中的情况有不少相似之处,物...

小刀爱编程
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部