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

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

棋盘的结构

// 棋子点,共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

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

  1. 中国象棋程序的设计与实现(十)--棋盘的定义和绘制 中国象棋程序的设计与实现(八)-如何构造一个棋子(車馬炮等) 中国象棋程序的设计与实现(九)–棋子点,棋子的小窝...

    本篇简要介绍棋盘类的定义.棋盘的关键属性.棋盘绘制算法的骨架. 棋盘的详细绘制算法等内容,我们将在接下来的几篇进行详细介绍. 棋盘类的定义 public abstract class ChessBoa ...

  2. 中国象棋程序的设计与实现(九)–棋子点,棋子的小窝 中国象棋程序的设计与实现(八)-如何构造一个棋子(車馬炮等)...

    本篇简要介绍,在中国象棋程序中,容纳棋子的棋子点. 由于棋子位于棋盘中,为了方便讲解本篇,需要先简要介绍下棋盘的结构. 棋盘的结构 // 棋子点,共90个,横9*纵10 public ChessPoi ...

  3. 中国象棋程序的设计与实现(八)-如何构造一个棋子(車馬炮等)

    本篇详细介绍,在中国象棋程序中,如何构造一个棋子. 1.棋子类的定义. public class ChessPiece extends JLabel 棋子是一个继承自JLabel的图形界面组件,当添加 ...

  4. 4年级计算机 设计贺卡教案,四年级上册信息技术《小贝的贺卡》教学设计

    四年级上册信息技术<小贝的贺卡>教学设计 一.教学内容: 教科书第40页至43页 二.教学目标 1. 知识目标: 学会综合运用word中图片.艺术字.文本框.自选图形等制作贺卡. 2. 能 ...

  5. 设计一个中国象棋游戏,ChessPiece为抽象类,提供代表一个棋子位置的属性和方法,和isMoveLegal();设计ChessPiece的具体实现类(如车,马,帅等)

    设计一个中国象棋游戏,ChessPiece为抽象类,提供代表一个棋子位置的属性和方法,和isMoveLegal():设计ChessPiece的具体实现类(如车,马,帅等),这些类能够根据自身特点实现不 ...

  6. 计算机中国象棋书籍,[建议]中国的象棋永远不能被没有“思维”的电脑所代替(就目前的电脑象棋软件...

    [建议]中国的象棋永远不能被没有"思维"的电脑所代替(就目前的电脑象棋软件有感而发) 先自我介绍一下,本人来自上海,师从原江苏省棋队教练言穆江大师,现年28岁,无任何值得自傲的成绩 ...

  7. python·pygame小游戏--中国象棋(原码附上,免费下载)

    大家好我是小豪,今天给大家带来的是pygame小游戏-中国象棋 因为看到博客上面很多上传了的中国象棋py文件,都是收费的.所以我大胆的上传个免费的-已经把原码上传了,感兴趣的可以去下载. pygame ...

  8. 2016全国大学生计算机设计大赛,我校获2016年(第九届)中国大学生计算机设计大赛全国二等奖...

    我校严汉轩.王晓燕.钱铭铭三名同学获奖 我校<"酷门"门禁综合解决方案>获软件服务外包组全国二等奖 我和我作品的故事 近日,由教育部高等学校计算机类专业教学指导委员会. ...

  9. 3D游戏设计读书笔记九

    3D游戏设计读书笔记九 本次作业五选一,我选择制作血条预制设计,要求如下: 分别使用 IMGUI 和 UGUI 实现 使用 UGUI,血条是游戏对象的一个子元素,任何时候需要面对主摄像机 分析两种实现 ...

最新文章

  1. “刚毕业1年,做Python能挣多少?”网友:吹的不多..
  2. Linux+Apache2.4+PHP5.6+MySQL5.6源码安装步骤
  3. SQL中truncate table和delete的区别 --转
  4. 在JavaFX程序中嵌入Swing内容
  5. 读CLR via C#总结(13) 详谈泛型
  6. 这款耳机的性价比堪比AirPods,有点酷!
  7. python是哪个专业学的-专业python培训学校
  8. 【语音识别】基于MFCC实现声纹识别matlab源码
  9. 我从校园出来的这几年
  10. java扫码枪键盘_浅谈在react中如何实现扫码枪输入
  11. 解决win10笔记本睡眠后无法唤醒甚至自动关机的问题
  12. 内部专家亲自揭秘!滴滴对象存储系统的演进之路
  13. 前置条件,不变性条件,后置条件 --《java并发编程实战》
  14. HTTP API接口规范
  15. 【历史上的今天】9 月 7 日:世界上第一部电子电视;惠普联合创始人出生;上亿美国人隐私信息泄露
  16. 企业如何挑选服务器托管,主机托管有啥优势
  17. 华创芯光朱斌斌博士受邀坪山区半导体产业创新发展高端研讨会
  18. 大数据早报:时装设计也用上了人工智能,亚马逊研究出新算法;上海地铁趣味消费数据发布(9.12)
  19. 蓝桥杯 — 奖券数目(有些人很迷信数字,比如带“4”的数字)
  20. 在Linux中Realplay 10.0 的安装和使用

热门文章

  1. 滦平一中2021年高考成绩查询,滦平县第一中学
  2. 非常好的Ansible入门教程(超简单)
  3. 我的世界服务器怎么添加信息框,我的世界服务器怎么添加指定建筑
  4. Java JDK安装与配置以及Eclipse下载(Java 学习预备工作,针对windows用户学习者)
  5. [码上追溯] vue项目启动出现cannot GET /服务错误
  6. 使用 Xcode 在越狱 iOS 设备上进行开发调试
  7. 基于STM32的UCOSIII入门教学(一)第1讲 RTOS背景知识简介
  8. jsbox 导入_JSBox 插件「Launch Center」发布
  9. 利用云服务器实现不同局域网的电脑进行远程控制
  10. 注册资本TOP100银行,Coremail市占29%