- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
象棋程序设计.doc
象棋程序设计
课程设计目的
Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。
为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了一周的Java程序设计课程设计。
通过此次课程设计,巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使学生通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。
2.设计方案论证
2.1功能描述
象棋是中国一种流传十分广泛的游戏。下棋双方根据自己对棋局形式的理解和对棋艺规律的掌握,调动车马,组织兵力,协调作战在棋盘--这块特定的战场上进行着象征性的军事战斗。本程序的功能就是将棋盘和棋子在电脑上模拟出来,双方可以通过鼠标对己方棋子的操作进行对弈。
2.2概要设计
象棋,人人会走,把己方的棋子按不同棋子的规则放在棋盘合适的位置上。象棋包含三个要素:棋盘、棋子和规则。在本象棋程序的设计上,也大致遵循这三个要素,但是细化为四个方面:棋盘、棋盘上可以走棋的落子点、棋子和象棋规则。
棋盘:绘制棋盘时,进行画横线,画最左侧的竖线,画最右侧的竖线,画中间的竖线,画斜线等操作。棋盘其实就是一张棋盘的图形,我们要在计算机上的棋盘上落子并不像在现实生活中那么容易,这里说的棋盘充其量只是背景。
落子点:真正落子的地方必须是我们在图形界面上设定的落子点。落子点其实就是在图形界面上定义一个应该摆放棋子的点位置。
棋子:包括棋子名和棋子颜色和棋子所属方等信息。
象棋规则:不同棋子只能按照各自的规则在这些设定的位置上摆放、搏杀。
根据前面的细化,程序中分别设计了四个类对应棋盘、落子点、棋子和象棋规则这四个方面。四个类几乎包括了程序的全部,程序框图如下图所示:
图1 .程序功能框图
2.3详细设计
2.3.1棋子类Chess
Swing中并没有棋子这个组建类,所以我们必须设计一个组件,棋子其实就是圆形的JLabel,但Swing中的JLabel组件是方形的,没关系,利用JLabel我们可以创建圆形的JLabel组件——Chess。
2.3.2落子点类Point
在平面中确定一个点需要X坐标和Y 坐标,在图形界面中确定一个点同样也需要X坐标和Y坐标。图形界面的左上角的坐标为(0,0),X数值往右增大,Y数值往下增大。
落子点其实就是在图形界面上定义一个应该摆放棋子的点位置,棋子摆放在任何位置都视为非法,除了落子点。当然,描述一个点位置仅仅是类Point的基本功能之一,他还需要知道这个点上是否已有棋子以及是什么棋子。
2.3.3棋盘类ChessBord
棋盘其实就是我们看到的一个图形界面,将棋盘设计为JPanel类,在Jpanel这个容器上,我们可以利用坐标确定落子点,也可以加入我们自定义的棋子组件。
JPanel容器其实就像有底色的画布,有了落子点和棋子,还需要我们自己画横线和竖线。ChessBord继承了JPanel,覆写方法paintCompont,实例化JPanel时,会自动调用该方法。
2.3.4规则类ChessRule
ChessRule类的作用就是判断走棋是否合法。实现思路就是根据走棋的起点和终点计算走棋路线中是否有其他的棋子,再依据是何种棋子判断走棋是否合法。
2.3.5类ChessFrame
虽然上面4个类实现了象棋程序的所有功能,但还需要一个底层窗口容器加载ChessBoard这个JPanel。并添加相应的菜单。
3.设计结果与分析
程序运行之后,可以实现两个人分别控制红方和黑方的棋子进行对弈,缺点就是程序过于简单,只能实现上述功能,不能悔棋,没有计时功能,也不能实现人机对弈功能。程序运行结果如下所示:
图2. Chess类的运行结果“车”
绘制“中国象棋棋盘”,通过定义划横线,画左侧的竖线,画最右侧的竖线,画中间的竖线,画斜线等操作,输出程序的棋盘的运行结果。
图3.中国象棋棋盘
通过定义X坐标,Y坐标,和棋子,并将棋子加入到棋盘上的指定位置,输出中国象棋开局的程序运行结果。
图4.中国象棋程序运行效果图——开局
图5.中国象棋程序运行效果图——残局
4.设计体会
通过对java的课程设计,针对java的书本知识得到了进一步的巩固,具体化就是加深了我对图形用户界面理解,对程序的深层理解,清楚程序中每一步的功能,在程序的运行中是十分重要的,一个
文档评论(0)