1、中国象棋打谱系统开发摘 要 中国象棋发展至今已有数千年的历史了,它是中华民族智慧的结晶。在我国,中国象棋的普及程度是其它棋类无法相比的,大至国际、国内比赛,小至社区街道。如今,仅中国就有2亿人会下中国象棋,且中国象棋的发展趋势日益国际化。游戏程序的开发是计 算机应用的一个重要方面之一。游戏程序的发展几乎与计算机网络和软硬件技术的发展基本保持同步的。游戏无论是开发过程还是运行过程,对它所依赖的计算机硬件配置的要求较高。本论文采用软件工程学方法设计并实现了中国象棋打谱系统,该系统能够制作并保存用户对弈过程,能重新演示对弈过程,即复盘。当然它也能遵守象棋的一切基本规则,实现人机对战,人与人对战等多方
2、面功能。关键词:中国象棋,打谱,复盘,JAVA,EclipseDevelopment of Chinese Chess Spectrum Fight SystemAbstract As the quintessence of a country for China, it has passed thousands of years since Chinese Chess developed. Other chess couldnt be compared with its popularization in China, from large- international or nationa
3、l competition to smaller pieces community street .It is the distillate of Chinese peoples wisdom. Now, there are 200 million people can play Chinese Chess only in China. And Chinese Chess is developing in the way of internationalization. Development of the game program is one important ASPect of com
4、puter applications. Procedures for the development of the game almost remain the same step with computer NETwork and software technology development . Whether the development process or operation process of game, it has to rely on a high computer hardware configuration. The paper designs and develop
5、s the Spectrum system of Chinese chess with Software Engineering.And the system can create and maintain a game process in order to re-demo game process, which called chessboard resuming.Of course, it also can comply with all the basic chess rules and achieve many functions, such as human-machine war
6、, man-man war and so on.Keyword: Chinese Chess, Spectrum fight, chessboard resuming, JAVA , Eclipse中国象棋发展现状 中国象棋发展至今已有二千三、四百年的历史了,早在战国时期就有正式记载,堪称中国的国粹。据统计,中国有2亿人会下中国象棋,这相当于平均6至7个人中就有1人会下,可见它有着广泛的群众基础。方寸之间包含天地玄机,人生哲理,使人越是细玩越觉其味悠然深远。简单的棋规,便捷的载体,使得他成为雅俗共赏的竞技项目。然而,如今中国象棋的发展前景却令人堪忧。导致这种现象的主要因素有:第一,就东亚地区,
7、围 棋的影响力胜于中国象棋。第二,中国象棋虽然在国内很受欢迎,但在世界舞台上名声却不如国际象棋那么响亮。之所以会存在这两个因素,都是因为在国际赛事上中国象棋的参赛选手大都是华人,而非华裔的选手又大都是业余选手,这无疑使比赛失去了竞争力,而围棋有韩国和日本的参与,国际象棋有全世界国家的加入。第三,进入了21世纪后,供人们娱乐活动的选择越来越多,中国象棋在年轻人的心中已开始渐渐失去魅力。 各种中国象棋软件的开发与应用,尤其是在网络方面的推广,使得中国象棋得到了很好的宣传,全面展示了中国象棋的风采、优点与特色,同时也让外国人认识到中国象棋这一我国的“国粹”。 中国象棋打谱系统正是为这一可行性 而开发
8、设计的,玩家可以通过它很好的研究棋谱,学习中国象棋技术,提高水平。想必在未来的几年随着中国象棋在各个领域的推广,必定会带来巨大的影响和经济效益。技术性 本系统开发应用了JAVA技术,纯粹的JAVA语言编程实现,可以定义不同的类来实现,比如棋盘类,棋子类,棋点类,规则类,记录棋谱类,演示棋谱类等。类与类之间互相调用,而且还调用了一些JAVA的类库的东西,比如棋盘,棋子的绘制的实现方法就是从类库中调用的。系统开发工具可以用Eclipse3.1,Eclipse3.1是个非常强大的开发工具,包含了JAVA的所有类库,而且具有操作方便,占用资源少等特点。本系统主要实现如下目标: 系统实现:象棋棋谱界面,
9、记录棋步,走棋与吃棋,胜负判断, 设计中国象棋主菜单,下拉分菜单为:制作棋谱,保存棋谱,演示棋谱,退出棋谱。 制作棋谱:实现棋谱的显示,可以实战对弈功能,下棋规则的监督。 保存棋谱:实现棋谱的保存,并生成一个棋谱文件,以便演示棋谱时使用。 演示棋谱:实现对弈过程的演示,可以自动演示也可手动演示,并有时间的控制。 退出棋谱:对话框提示,是否退出系统。 目第三,按照用户的要求将数据从计较机抽掏出来。 数据库妙技成长到今天,可说是较为成熟,但实情什么是数据库还未有一个被普遍接管的定义。这里,从差别角度给出的定义或描写,罗列几例: 1)数据库是集体用户的集体数据。 2)数据库是构造、存储、打点数据的客
10、栈。 数据库可以被定义为一个基于某种 数据模型存储起来的、为某个特定构造的多种应用处事、并具有尽年夜概小的冗余度的相关的数据集结。其数据结构自力于使用数据的措施,对数据的增加、改削和检索,由体系举办统一的节制,体系供应的数据模型也有利于将来应用的扩展。 我们将以上几种定义概括起来,不难发明一个数据库便是一个可共享的数据集结,用于餍足差此外信息需求,而且集结中的数据彼此之间有彼此接洽。 数据库具有以下一些特性。 (1)数据共享性; (2)数据一体化和结构化; (3)较少的数据冗余度; (4)数据的自力性; (5)对数据实施齐集统一的节制。摘要 中国象棋被誉为中国的国粹,从诞生到现在已经成为国人最
11、喜欢的棋类竞技游戏,对青少年的影响也是很广泛。双方在象棋的对弈过程中,体验着智慧和快乐,可以说中国象棋游戏完全代表了博弈游戏。中国象棋游戏的设计工作是非常复杂和重要的,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,将牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中还会应用类的继承机制以及一些设计模式。如何设计和开发好中国象棋游戏,对与提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,开发者需要处理好各个类之间的集成关系,还要处理各个类的相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。本文主要
12、研究基于Java 技术的中国象棋游戏的分析与设计,对中国象棋游戏特殊的行棋规则给予了细致的分析与理解,设计出了一种实时可行的行棋规则,从移动范围、移动方向和穿越障碍几个方面重新描述行棋规则,基于Java技术通过计算机模拟实现了中国象棋特殊的行棋规则算法,设计出了一种可行的方法,使每个棋子的行棋路线都严格遵循本身的行棋规则,游戏的实战对弈得以实现,通过实验运行,证明这种限定棋子行棋路线的方法是可行的,并得到了预期的目标。关键词:中国象棋、类、Java、规则AbstractChina Chin chess drive fame is China of heritage cultural, from
13、 birth to now have already become the people most like of chess tournament game, influence teenager is also very extensive.Both parties are in the Chin chess of the rightness the Yi process, experience the happiness of intelligence opposing camps, can say China Chin chess complete become China the f
14、lag of the Bo Yi. China the design of the Chin chess game work is very complications and importance, it involve noodles wide, concern aspect many, if not good consideration and design, will hard success development this game.Will concern sketch interface in this game of the design of manifestation a
15、nd renewal, data of collections and renewal, and in this develop of game return would application inherit of type mechanism and some design mode. How design and development good Chin chess game, rightness and exaltation in China Java development level and system of design the ability have biggest of
16、 help.In the design the development the process, developer demand processing very of each type of integration relation, return want processing each of correspond of pack, and still want coordination very each mold piece of the logic of dependence relation and data correspondence relation. This text
17、is main research according to the Java technique of China Chin chess game of analysis and design, to China the Chin chess game be special of line the chess rule gave meticulous of analysis and comprehension, design a kind of solid hour viable line chess rule, from move scope, move direction with cro
18、ss a few aspect of obstacle afresh description line chess rule, passed a calculator imitate realization according to the Java technique China the Chin chess be special of line chess rule calculate way, design a kind of viable method, make each pawn of line chess route all strict follow oneself of li
19、ne chess rule, the true war of game to Yi can realization, pass experiment circulate, certificate this kind of limit pawn line chess route of the method be viable, and got expectation of target.Key words:Chinese Chess、Class、Java 、Rule目录1绪论1 1.1休闲类游戏开发简述11.2中国象棋发展现状21.3论文组织结构32相关技术简介4 2.1面向对象程序设计方法4
20、2.2Java技术53需求分析与可行性研究7 3.1需求分析7 3.2可行性分析103.3小结114系统总体设计12 4.1设计内容12 4.2系统结构图15 4.3游戏流程图16 4.4小结175系统详细设计18 5.1主类设计18 5.2对弈棋盘类设计21 5.3棋子类设计30 5.4棋点类设计31 5.5走棋规则类设计32 5.6记录棋谱类设计43 5.7棋谱演示类设计45 5.8小结486系统实现与测试49 6.1系统开发环境49 6.2系统实现49 6.3系统测试527总结与展望53 7.1总结53 7.2展望54参考文献55致谢辞56附录1英文文献57附录2文献翻译65 1 绪论1
21、.1休闲类游戏开发简述休闲类游戏(Casual Game)可以包含任何游戏类型的游戏性要素,通常休闲游戏的游戏规则相对简单,无需特别的技巧,也不需要较长的时间就能完成游戏。休闲游戏经常出现在不同的平台上,包括家用游戏机、掌上游戏机和个人电脑上等等。休闲类游戏通常也适合于各种不同性别、地域和文化的玩家群体。 本文所涉及的游戏项目,是一款棋类休闲游戏,基于 Windows 平台,无需较长的时间就能完成一局的游戏,一局游戏一般在 5 到 20 分钟左右就能完成。根据该局游戏玩家的游戏策略等因素,一局游戏的完成时间会有一定差别1。在游戏开发团队中,团队成员主要有制片人等管理人员、程序员、美术(本文中的
22、美术一词代表的是美术制作人员,在一些游戏公司中用 美术 这个词,而不用 美工 这个词)和策划(游戏设计师)。通常还需要音乐制作人员,但在多数公司中,主要的音乐制作任务都会交由独立音乐制作人或者专门的音乐制作公司完成。 早期传统的游戏程序是大多都是单线程执行的,这是由于游戏软件本身的内在逻辑,以及需要较高的实时交互性。如下一页的图所示,说明了通常一个游戏软件的运行流程。 在程序初始化阶段,进行内存分配,从硬盘读取资源,建立相关的辅助结构等。接下来进入游戏主循环不停的循环运行直到接收到退出游戏的指令或者消息。在主循环中,首先接收玩家的输入,然后根据游戏内部规则改变游戏的状态,然后进行图形图像处理,
23、输出一帧游戏画面,接下来根据帧速率和游戏速度的要求,等待一段时间后继续执行主循环或者直接开始下一个循环2。1.2中国象棋发展现状中国象棋发展至今已有二千三、四百年的历史了,早在战国时期就有正式记载,堪称中国的国粹。据统计,中国有2亿人会下中国象棋,这相当于平均6至7个人中就有1人会下,可见它有着广泛的群众基础。方寸之间包含天地玄机,人生哲理,使人越是细玩越觉其味悠然深远。简单的棋规,便捷的载体,使得他成为雅俗共赏的竞技项目。然而,如今中国象棋的发展前景却令人堪忧。导致这种现象的主要因素有:第一,就东亚地区,围棋的影响力胜于中国象棋。第二,中国象棋虽然在国内很受欢迎,但在世界舞台上名声却不如国际
24、象棋那么响亮。之所以会存在这两个因素,都是因为在国际赛事上中国象棋的参赛选手大都是华人,而非华裔的选手又大都是业余选手,这无疑使比赛失去了竞争力,而围棋有韩国和日本的参与,国际象棋有全世界国家的加入。第三,进入了21世纪后,供人们娱乐活动的选择越来越多,中国象棋在年轻人的心中已开始渐渐失去魅力。 各种中国象棋软件的开发与应用,尤其是在网络方面的推广,使得中国象棋得到了很好的宣传,全面展示了中国象棋的风采、优点与特色,同时也让外国人认识到中国象棋这一我国的“国粹”。 中国象棋打谱系统正是为这一可行性而开发设计的,玩家可以通过它很好的研究棋谱,学习中国象棋技术,提高水平。想必在未来的几年随着中国象
25、棋在各个领域的推广,必定会带来巨大的影响和经济效益3。1.3论文组织结构第一章是绪论,主要介绍了休闲类游戏,中国象棋发展现状以及论文的组织结构。第二章是相关技术简介,主要介绍了本次设计所用到的知识,如Java面向对象程序设计技术和鼠标事件模型处理。第三章是需求分析及可行性研究,主要介绍了需求分析中的系统功能需求和系统性能需求;经济性、技术性和社会性可行性分析。第四章是系统总体设计,主要介绍了系统设计的主要内容、软件结构图和游戏运行流程图。第五章是系统详细设计,主要介绍函数的算法实现和流程图,是本论文的重点部分。第六章是系统实现和测试,主要是介绍系统的主要实现界面和系统的测试方法和结果。 第七章
26、是总结和展望,总结了所取得的成果和存在的不足之处,展望未来应改进的地方。2 相关技术简介2.1面向对象程序设计方法Java面向对象程序设计的基本思想是通过构造和组织对象来求解问题的。对象是很好理解的,任何一种物体都可以被认为是对象,例如,汽车就是一种对象。对象具有两个最基本的属性:具有一定的物质基础和一定的功能,这两种基本属性在Java语言中表现为拥有一定的存储单元并具备一定的功能。理解了Java的这种面向对象程序设计的基本思想之后,在以后的编程过程中,就应当个构造人们容易理解的更接近于真实物理世界物体的对象。Java面向对象程序设计的过程非常简单。这里介绍一种自顶向下的程序设计方法,首先构造
27、一个类来处理需要解决的问题,然后根据已经拥有的类(例如以前求解其它问题时实现的类),分析和构造新的类,设法将问题分解下去,而最开始构造的类通过组织这些新构造的类、已有的类及由他们生成的实例来求解指定的问题。这个过程可以继续递归下去,用在新构造的类上,直到最后解决了指定的问题,例如Java的应用程序和小应用程序都必须有一个类作为入口求解问题。在计算机语言中,面向对象的类一般具有三个基本特性:封装性、继承性和多态性,这三种特性进一步简化了Java求解模型,提高了程序的复用性,节省了程序的代码量,从而提高了软件的生产率4。2.2Java技术图形用户界面不仅可以提供各种数据的基本图形的直观表示形式,而
28、且可以建立友好的交互方式,从而使计算机软件可以设计得十分简单易用。从Java语言诞生到现在,Java语言已经提供了两代图形用户界面。第一代图形用户界面AWT提供了基本的图形用户界面,它强烈地依赖于具体的计算机操作系统,而且缺少基本的剪贴板和打印支持功能。现在第二代图形用户界面Swing对AWT进行了扩展,Swing不仅在功能上比AWT强大,而且在很大程度上克服了AWT的上述缺点,它所设计的图形用户界面与具体的计算机操作相关性很小,而且可以定制指定的操作系统风格的图形用户界面5。GUI(图形用户界面)组件构成了图形用户界面的基础。在Java程序设计中,要求按照一定的布局方式将组件安排在容器中,然
29、后通过事件处理的方式实现人机交互,而容器本身也是组件,这样在容器中也可以含有容器,从而可以通过这种嵌套方式方便地组合各种组件。事件处理模型是Java语言提供的一种人机交互模型,它使得用户能够通过鼠标、键盘或其他输入设备来控制程序的执行流程,从而达到人机交互的目的。对鼠标、键盘或其他输入设备的各种操作一般也称为事件。Java语言对这些事件的处理模型是采用面向对象的方法,即通过对象的形式把各种事件进行封装和处理。这种事件处理模型的三个基本要素是事件源、事件对象以及事件监听器。事件源是各种组件,是接受各种事件的对象。在各种事件源上运用鼠标、键盘或其他输入设备进行各种操作,就会有事件发生。每种操作一般
30、都对应着事件,Java语言通过事件对象来包装这些事件。对事件进行处理是通过事件监听器实现的。因为鼠标事件也是一种事件,所以对鼠标事件进行处理要遵循事件处理模型。鼠标事件的处理也是建立在事件源的基础之上,以事件对象本身,最后通过事件监听器进行处理。类java.awt.event.MouseEvent包装常用的鼠标事件,例如,按下鼠标键和放开鼠标键等。类MouseEvent的实例对象记录了鼠标的当前位置和状态发生变化的鼠标键等。对鼠标事件进行处理最关键的是实现事件监听器接口。这些相关接口包括MouseListener,MouseMotionListener,MouseWheelListener,M
31、ouseInputListener。前面三个是包java.awt.event中的接口,最后一个接口MouseInputlistener来自包javax.swing.event。接口Java.awt.event.MouseListener主要用来处理按下鼠标键、放开鼠标键、单击鼠标键、鼠标进入组件内和鼠标离开组件区域等事件。 对鼠标事件进行处理,就是要设计类,实现上面的鼠标事件监听器接口,然后在事件源中注册处理鼠标事件监听器的对象,以便对鼠标事件进行处理6。3 需求分析与可行性研究3.1需求分析3.1.1系统功能需求象棋盘由九道直线和十道横线交叉组成,棋盘上共有九十个交叉点,象棋子就摆放和活动在
32、这些交叉点上。棋盘中间没有划通直线的地方,叫做“河界”;划有交叉线的地方,叫做“九宫”。九道直线,红棋方面从右到左用中文数字一至九来代表,黑棋方面从右到左用阿拉伯数字1至9来表示。 棋子共有三十二个,分为红、黑两组,每组十六个,各分七种,其名称和数目如下:红棋子:帅一人,车、马、炮、相、士各两个,兵五个。黑棋子:将一个,车、马、炮、象、士各两个,卒五个。 在对局时,由执红棋的一方先走,双方轮流各走一着,直至分出胜负或走成和棋为止。轮到走棋的一方,将某个棋子从一个交叉点到另一个空着的交叉点,或者吃掉对方的棋子而占领叉点,都算走了一着。双方各走了一着,称为一个回合。 帅(将)每一着只许走一步,前进
33、、后退、横走都可以,但不能走出“九宫”。帅和将不准在同一直线上直接对面,如一方已先占据,另一方必须回避。士每一着只许沿“九宫”斜线走一步,可进可退。相(象)不能越过“河界”,每一着斜走两步,可进可退,即俗称相(象)走田字。当田字中心有别的棋子时,俗称塞相(象)眼,则不行走过去。 马每着走一直(或一横)一斜,可进可退,即俗称“马走日字”。如果在要去方向紧靠一直(或一横)的地方,有别的棋子挡住,俗称“蹩马腿”,就不能走过去。 车每一着可以直进、直退、横走,不限步数。 炮在不吃子的时候,走法同车一样。 兵(卒)在没有过“河界”前,每着只许向前直走一步;过“河界”后,每着可以向前走一步,也可以横走一步
34、,但不能后退。走一着棋时,如果己方棋子能够走到的位置有对方棋子存在,就可把对棋子吃掉而占领那个位置。只有炮吃了必须隔一个棋子(无论是哪一方的)跳吃,即俗称“炮打隔子”。除帅(将)外,其它棋子都可以听任对方吃,或主动送吃。一方的棋子攻击对方的帅(将),并在下一着要把它吃掉,称为“将军”,或简称“将”。被“将军”的一方必须立即“应将”,即用自卫的着法去化解被“将”的状态。如果被“将军”而无法“应将”,就算被“将死”。轮到走棋的一方,帅(将)虽没被对方“将军”,却被禁在一个位置上无路可走,同时己方其它棋子也都不能走动,就算被“困毙”7。系统实现:象棋棋谱界面,记录棋步,走棋与吃棋,胜负判断,设计中国
35、象棋主菜单,下拉分菜单为制作棋谱,保存棋谱,演示棋谱,退出棋谱。(1)制作棋谱:实现棋谱的显示,可以实战对弈功能,下棋规则的监督。(2)保存棋谱:实现棋谱的保存,并生成一个棋谱文件,以便演示棋谱时使用。 (3)演示棋谱:实现对弈过程的演示,可以自动演示也可手动演示,并有时间的控制。开始制作棋谱,开始游戏将军符合规则放回原处悔棋放回原版走棋游戏结束,保存棋谱演示棋谱结束是否是否否是是保存棋谱开始点击制作点击保存点击演示读入文件文件空演示棋谱错误处理制作棋谱结束是否否否否是开始变量初始化j=1,j=1j=r,j=c求出棋点J+,j+设红棋类别,颜色设黑棋类别,颜色设红棋棋点坐标设黑棋棋点坐标结束否是开始j=1j=y轴长画出棋盘横线j+j=1j=x轴长画出棋盘竖线j+画出将帅区画出两边提示坐标结束是否否是开始按下鼠标棋子不移动棋子不移动获取棋子对象获取棋子位置j=1,j=1j=x轴长,j=y轴长检查棋子所在棋点j+,j+结束是否否是否是.