中国象棋程序的设计与实现(九)–棋子点,棋子的小窝
本篇简要介绍,在中国象棋程序中,容纳棋子的棋子点。
由于棋子位于棋盘中,为了方便讲解本篇,需要先简要介绍下棋盘的结构。
棋盘的结构
// 棋子点,共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
中国象棋程序的设计与实现(九)–棋子点,棋子的小窝相关推荐
- 中国象棋程序的设计与实现(十)--棋盘的定义和绘制
中国象棋程序的设计与实现(八)-如何构造一个棋子(車馬炮等) 中国象棋程序的设计与实现(九)–棋子点,棋子的小窝...
本篇简要介绍棋盘类的定义.棋盘的关键属性.棋盘绘制算法的骨架. 棋盘的详细绘制算法等内容,我们将在接下来的几篇进行详细介绍. 棋盘类的定义 public abstract class ChessBoa ...
- 中国象棋程序的设计与实现(九)–棋子点,棋子的小窝
中国象棋程序的设计与实现(八)-如何构造一个棋子(車馬炮等)...
本篇简要介绍,在中国象棋程序中,容纳棋子的棋子点. 由于棋子位于棋盘中,为了方便讲解本篇,需要先简要介绍下棋盘的结构. 棋盘的结构 // 棋子点,共90个,横9*纵10 public ChessPoi ...
- 中国象棋程序的设计与实现(八)-如何构造一个棋子(車馬炮等)
本篇详细介绍,在中国象棋程序中,如何构造一个棋子. 1.棋子类的定义. public class ChessPiece extends JLabel 棋子是一个继承自JLabel的图形界面组件,当添加 ...
- 4年级计算机 设计贺卡教案,四年级上册信息技术《小贝的贺卡》教学设计
四年级上册信息技术<小贝的贺卡>教学设计 一.教学内容: 教科书第40页至43页 二.教学目标 1. 知识目标: 学会综合运用word中图片.艺术字.文本框.自选图形等制作贺卡. 2. 能 ...
- 设计一个中国象棋游戏,ChessPiece为抽象类,提供代表一个棋子位置的属性和方法,和isMoveLegal();设计ChessPiece的具体实现类(如车,马,帅等)
设计一个中国象棋游戏,ChessPiece为抽象类,提供代表一个棋子位置的属性和方法,和isMoveLegal():设计ChessPiece的具体实现类(如车,马,帅等),这些类能够根据自身特点实现不 ...
- 计算机中国象棋书籍,[建议]中国的象棋永远不能被没有“思维”的电脑所代替(就目前的电脑象棋软件...
[建议]中国的象棋永远不能被没有"思维"的电脑所代替(就目前的电脑象棋软件有感而发) 先自我介绍一下,本人来自上海,师从原江苏省棋队教练言穆江大师,现年28岁,无任何值得自傲的成绩 ...
- python·pygame小游戏--中国象棋(原码附上,免费下载)
大家好我是小豪,今天给大家带来的是pygame小游戏-中国象棋 因为看到博客上面很多上传了的中国象棋py文件,都是收费的.所以我大胆的上传个免费的-已经把原码上传了,感兴趣的可以去下载. pygame ...
- 2016全国大学生计算机设计大赛,我校获2016年(第九届)中国大学生计算机设计大赛全国二等奖...
我校严汉轩.王晓燕.钱铭铭三名同学获奖 我校<"酷门"门禁综合解决方案>获软件服务外包组全国二等奖 我和我作品的故事 近日,由教育部高等学校计算机类专业教学指导委员会. ...
- 3D游戏设计读书笔记九
3D游戏设计读书笔记九 本次作业五选一,我选择制作血条预制设计,要求如下: 分别使用 IMGUI 和 UGUI 实现 使用 UGUI,血条是游戏对象的一个子元素,任何时候需要面对主摄像机 分析两种实现 ...
最新文章
- “刚毕业1年,做Python能挣多少?”网友:吹的不多..
- Linux+Apache2.4+PHP5.6+MySQL5.6源码安装步骤
- SQL中truncate table和delete的区别 --转
- 在JavaFX程序中嵌入Swing内容
- 读CLR via C#总结(13) 详谈泛型
- 这款耳机的性价比堪比AirPods,有点酷!
- python是哪个专业学的-专业python培训学校
- 【语音识别】基于MFCC实现声纹识别matlab源码
- 我从校园出来的这几年
- java扫码枪键盘_浅谈在react中如何实现扫码枪输入
- 解决win10笔记本睡眠后无法唤醒甚至自动关机的问题
- 内部专家亲自揭秘!滴滴对象存储系统的演进之路
- 前置条件,不变性条件,后置条件 --《java并发编程实战》
- HTTP API接口规范
- 【历史上的今天】9 月 7 日:世界上第一部电子电视;惠普联合创始人出生;上亿美国人隐私信息泄露
- 企业如何挑选服务器托管,主机托管有啥优势
- 华创芯光朱斌斌博士受邀坪山区半导体产业创新发展高端研讨会
- 大数据早报:时装设计也用上了人工智能,亚马逊研究出新算法;上海地铁趣味消费数据发布(9.12)
- 蓝桥杯 — 奖券数目(有些人很迷信数字,比如带“4”的数字)
- 在Linux中Realplay 10.0 的安装和使用
热门文章
- 滦平一中2021年高考成绩查询,滦平县第一中学
- 非常好的Ansible入门教程(超简单)
- 我的世界服务器怎么添加信息框,我的世界服务器怎么添加指定建筑
- Java JDK安装与配置以及Eclipse下载(Java 学习预备工作,针对windows用户学习者)
- [码上追溯] vue项目启动出现cannot GET /服务错误
- 使用 Xcode 在越狱 iOS 设备上进行开发调试
- 基于STM32的UCOSIII入门教学(一)第1讲 RTOS背景知识简介
- jsbox 导入_JSBox 插件「Launch Center」发布
- 利用云服务器实现不同局域网的电脑进行远程控制
- 注册资本TOP100银行,Coremail市占29%