文档介绍:该【中国象棋实验报告 】是由【世界末末日】上传分享,文档一共【12】页,该文档可以免费在线阅读,需要了解更多关于【中国象棋实验报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。本科学生综合性试验报告
课程名称:Java 程序设计
中国象棋
工程成员 学号
班 级 B02 班
工程名称
指导教师
中国象棋
开课学期
2025
至 2025 学年 第 1 学期
完成时间 2025 年 12 月 25 日
引言 1
开发背景 1
国内外象棋进展状况 1
开发目标 2
开发环境 2
设计思路 2
设计步骤 2
设计流程图 3
设计技术 3
io 技术 3
多线程 4
swing 4
设计规章 4
走棋规章 4
吃棋规章 4
代码实现 4
程序测试 5
步骤一:点击运行 5
步骤二: 6
总结与提升 10
引言
开发背景
中国象棋玩耍流传至今已经有数千年的历史了,是一种古老的文化,它集文化、科学、艺术、竞技于一体,有利于开发人的才智,熬炼人的思维,培育人的毅力,增加人的竞争意识。自从计算机制造,向各个领域进展,到成为我们现在每天工作和生活必不行少的一局部的这个过程中,电子玩耍也逐步渗入我们每个人的消遣活动中。在计算机已经普及的今日,对于可以用计算机进展程序编辑的人来说,开发属于自己的玩耍,已经不再是梦想,中国象棋历史悠久不仅源远流长,而且根底广泛,作为一项智力运动更成为我们玩耍开发的首选对象。
中国象棋是一项智力玩耍,以往都是人和人下棋,现在有了计算机我们可以和计算机竞技,人可以与计算机进展对弈。掌握计算机的是人类,而人工智能是综合性很强的一门边缘学科,它的中心任务是争论如何使计算机去做那些过去只能靠人的智力才能做的工作。因此,对玩耍开发过程中的人工智能技术的争论自然也就成了业界的一个热门争论方向。
国内外象棋进展状况
中国象棋玩耍流传至今已经有数千年的历史了,是一种古老的文化,它集文化、科学、艺术、竞技于一体,有利于开发人的才智,熬炼人的思维,培育人的毅力,增加人的竞争意识。自从计算机制造,向各个领域进展,到成为我们现在每天工作和生活必不行少的一局部的这个过程中,电子玩耍也逐步渗入我们每个人的消遣活动中。在计算机已经普及的今日,对于可以用计算机进展程序编辑的人来说,开发属于自己的玩耍,已经不再是梦想,中国象棋历史悠久不仅源远流长,而且根底广泛,作为一项智力运动更成为我们玩耍开发的首选对象。
中国象棋是一项智力玩耍,以往都是人和人下棋,现在有了计算机我们可以和计算机竞技,人可以与计算机进展对弈。掌握计算机的是人类,而人工智能是综合性很强的一门边缘学科,它的中心任务是争论如何使计算机去做那些过去只能靠人的智力才能做的工作。因此,对玩耍开发过程中的人工智能技术的争论自然也就成了业界的一个热门争论方向。
1
开发目标
在计算机技术日益进展的今日,为了让信息技术能够更好的贴近生活,并且在此根底上传承国学精华,为此设计一个简洁易懂的人人对弈的中国象棋小玩耍,同时也为了稳固自身对 java 的运用。
开发环境
本玩耍程序的设计是在 Windows 7 RTM 〔X86〕中文旗舰版操作系统环境下,使用 MyEclipse 中文版开发成功的。
硬件环境:英特尔酷睿 i5 双核处理器 430M 2GB DDR3 内存
开发软件: Eclipse
运行平台:Windows 7
设计思路
设计步骤
步骤一:窗体界面的设计;主窗体利用的是 swing 组件 JFrame,在组件 JFrame
上设计可视化界面。
步骤二:棋盘的绘制;中国象棋的棋盘是一个由 9*10 的横纵穿插的线条组成的,线条与线条之间的距离皆相等,而且横向线条上 5 线和下 5 线的交界处是“楚河汉界”,对此,要计算好线条与线条之间的距离以及线条起点和终点的坐标,利用线条绘制函数来绘制棋盘。
步骤三:象棋棋子的加载;中国象棋中一共包含 32 个棋子,蓝子有 26 个, 黑子有 16 个,其中兵〔卒〕有10 个,炮 4 个,车 4 个,马 4 个,相〔象〕4 个, 士〔仕〕4 个,将〔帅〕2 个,于是我们需要设计 32 个象棋棋子对象,蓝方 16 个,黑方 16 个,在象棋棋子类里编写棋子的操作。
步骤四:界面布局;JFrame 中各个位置都有其位置坐标,象棋棋子的位置由坐标的位置确定,由于棋子走动的位置只能限制在棋盘的线与线之间的交点上, 因此我们得到一个 9*10 的矩阵,棋子只能在这矩阵的位置上移动。
步骤五:设定棋子走棋规章;在中国象棋中,每一个棋子都有其特定的行走规章,比方马走“日”,相走“田”等,兵只能过河之后才能左右移动,所以对于棋子的移动位置需要利用矩阵的思想来限定。
步骤六:添加鼠标点击棋子大事;在当前的中国象棋玩耍中,是通过点击移动鼠标的方法来移动象棋的,当鼠标点击到棋子时,鼠标下一个位置就是该象棋棋子移动的位置,假设位置与上述规章相左时,象棋需要重选定。
步骤七:吃棋规章的给定;在中国象棋里,任何棋子都有吃棋的资格,但是自己的棋子不能吃自己的棋子,棋子的吃棋方式是依据走棋的方式来给定的,当前位置的棋子能走动到的位置即为该棋子当前能吃的位置,没有棋子级别凹凸之分。
步骤八:主函数调用;最终编写主函数调用以上方法。
2
设计流程图
中国象棋
界面设计
棋
盘绘制
棋
子加载
添加大事
点
击棋子
走
棋规章
吃
棋规章
图 1:玩耍设计流程图
设计技术
io 技术
该中国象棋小玩耍运用信息的输入和输出技术,其主要的实现代码是打印函
数, 以及文件的加载函数, 这两个函数所在的包是
内的。
以及
,在代码中的主要是输出鼠标点击的位置以及鼠标点击的棋子,并确定鼠标点击位置的棋子能否走棋或者能否吃棋。
(new File(“D:\\image\\”))图片导入函数,在玩耍代码中的
目的是加载棋子。
3
多线程
swing
该玩耍的 swing 技术引用在玩耍的可视化界面上,主界面继承的是 JFrame
父类,在 JFrame 界面上进展玩耍操作。
在 JFrame 上绘制棋盘;先创立绘图对象,然后再在绘图对象上运用 drawLine
画线函数,给定起点坐标〔x1,y1〕和终点坐标〔x2,y2〕,以此绘制出棋盘。
在 JFrame 上添加棋子;先定义一个棋子类 ChessMan,然后再定义 32 个ChessMan 类的对象,同时给每一个棋子对象再重载 BufferedImage 图片导入对象,利用 (new File(“D:\\image\\”))函数依次导入 32 个棋子。
设计规章
走棋规章
帅〔将〕每一着只许走一步,前进、后退、横走都可以,但不能走出“九宫”。将和帅不准在同始终线上直接对面,如一方已先占据,另一方必需回避。
士每一着只许沿“九宫”斜线走一步,可进可退。
相〔象〕不能越过“河界”,每一着斜走两步,可进可退,即俗称“相〔象〕走田字”。当田字中心有别的棋子时,俗称“塞〔相〕象眼”,则不许走过去。
马每着走始终〔或一横〕一斜,可进可退,即俗称“马走日字”。假设在要去的方向有别的棋子挡住。俗称“蹩马腿”,则不许走过去。
车每一着可以直进、直退、横走,不限步数。炮在不吃子的时候,走法同车一样。
兵〔卒〕在没有过“河界”前,每着只许向前直走一步;过“河界”后,每着可向前直走或横走一步,但不能后退。
吃棋规章
全部棋子都只能吃对方的棋子,不能吃己方的棋子。帅可以吃九宫格里对方的棋子,每一着只能走一步。士可沿着九宫斜线吃棋。
相、马、兵、车可以吃到其能走到的位置。炮吃棋需要隔一子,而且只能隔一子。
代码实现
为了实现中国象棋的对弈功能,有以下几个类:
4
图 2:代码类下拉列表
Chess 主类:包括主窗体的继承,利用 swing 组件 JFrame 实现可视化界面, 绘制棋盘,初始化每个棋子的初始位置,定义棋子的走棋规章以及棋子的吃棋规章,定义主函数调用方法。
ChessMan 类:这是象棋棋子类,用来定义每一个棋子,也就是说每一个棋子都是 ChessMan 类的对象,每一个对象都包含着特定的属性,有坐标属性,知名称属性。
StaticValue类:将棋子重载为 BufferedImage 类的对象,定义图片载入方法, 然后利用图片导入函数从 D 盘的 image 中导入棋子图片。
程序测试
步骤一:点击运行
图 3:中国象棋初始界面
如上图所示,程序点击运行时棋子依据初始化时的坐标以此排放在各自的位
5
置,等待鼠标点击和移动。
步骤二:
移动兵〔卒〕:在河内只能前进
兵〔卒〕过河移动
图 4:兵在河内的移动规章
图 5:兵过河的移动规章
炮的吃棋:炮要隔一子才能吃子
6
图 6:炮的吃棋规章
马的移动:马在未蹩脚时可以走“日”
图 7:马的走棋规章
7
相的移动:相在未塞象眼时可以走“田”
图 8:相的走棋规章
士的移动:只能在九宫格里对角走,而且只能跨一格
图 9:士的走棋规章
将的移动:只能在九宫格里上下左右移动且一步
8