中国象棋游戏设计.docx
- 文档编号:19058324
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:24
- 大小:34.36KB
中国象棋游戏设计.docx
《中国象棋游戏设计.docx》由会员分享,可在线阅读,更多相关《中国象棋游戏设计.docx(24页珍藏版)》请在冰豆网上搜索。
中国象棋游戏设计
JIUJIANGUNIVERSITY
毕业设计
题目中国象棋游戏设计
英文题目ChineseChessGameDesign
院系信息科学与技术学院
专业信息管理与信息系统
姓名林传玉
班级学号A102215
指导教师杨桃
二O一四年五月
摘要
中国象棋游戏系统是以C/S架构为基础开发的对弈软件,以灵活独立的Java语言为主要开发工具,其中多线程、JavaSwing、Socket编程以及数组和字符串的运用等技术都在开发过程中有所涉猎。
在计算机广泛普及的背景之下,中国象棋游戏解决了由时间、地域和对手有限等面对面对弈所产生的问题,给人们带来很多方便。
对于象棋游戏的研究,通过棋盘类的开发实现棋盘模块,从移动区域、移动规则两个方面详细研究并描述象棋七类棋子的基本属性和棋子走法。
另外,通过对系统的运行测试,表明系统除了实现基于Java技术的中国象棋游戏行棋规则算法,得以使每个棋子的行棋路线都严格遵循棋子属性所具备的走棋规则之外,还具有悔棋、计时、求和、认输等功能,而系统本身也具备界面朴素,操作简便,运行稳定的特点。
系统虽然调试完成,但是仍有许多不足之处,比如没有实现人机对弈,没有聊天记录的本机储存等功能。
不过,随着开发经验的积累,系统的缺陷和不足将会逐步得到完善。
关键词:
中国象棋,设计,软件,多线程,信息技术
Abstract
ChinesechessgamesystemisagamesoftwarewhichisdevelopedonthebasisofC/Sarchitecture,andusingtheflexibleindependentJavalanguageasthemaindevelopmenttools,multi-threading,JavaSwing,Socketprogrammingaswellasarrayandcharacterstringaredabbledintheprocessofdevelopmentintechnology.
Underthebroadbackgroundofthenetwork,theproblemsresultingfromfacetofacerivalgame,likethelimitsoftime,regionandopponentsetc,aresolved,tobringalotofconvenience.Forthestudyofchessgames,boardmoduleachievedthroughthedevelopmentofboards,studyanddescribethebasicpropertiesandpawnmovesofthesevencategoriesofchessfromtwoaspectsofmobileareaandmovingrules.Furthermore,throughtheoperationtestsofthesystem,itshowsthatinadditiontorealizetheChinesechessgamemovesrulesalgorithmbasedonJavatechnology,sothateachpiecemovesonlinestrictlyfollowpiecesattributeoftherulesofplayingchess,thesystemalsohasundo,timing,summation,throwinthetowelandotherfunctions,andthesystemitselfhascharacteristicsofsimpleinterface,easyoperationandstableoperation.
WhileSystemdebuggingiscompleted,buttherearestillmanydeficiencies,suchasnoman-machinechess,nochatslocalstorageandotherfunctions.However,withtheaccumulationofdevelopmentexperience,andgraduallyperfecttheflawandtheinsufficiencyofthesystemisimperative.
Keywords:
ChineseChess,Design,Software,MuitiTheard,InformationTechnology
1绪论
1.1课题背景
中国象棋作为我国的十大“国粹”之一,其爱好者不计其数。
中国象棋的发端真可谓源远流长,早在先秦时期便已孕出雏形。
经过岁月的洗涤,两千多年的演化变迁,中国象棋早已成了一项家喻户晓、饭后闲时的消遣活动。
而我们目前见到的这种象棋规则和对弈模式却直到宋朝才制定完成。
其中,棋子“炮(炮)”的运用也是在火药火炮发明之后补充进去的,然后慢慢形成眼下的规则和模式。
中国象棋之所以流传至今,是因为随着时间的沉淀,人们不断地将智慧灌入其中,加以完善。
象棋的演变过程与历史变迁有着密切的联系,如同生命一般,随着时代的发展,它也跟着改头换面,与时俱进。
现今,在计算机上进行象棋对战的新颖弈棋模式备受象棋爱好者推崇,而面对面切磋棋艺的传统对弈形式正在慢慢地退离历史舞台,渐渐地淡出人们的生活圈。
随着Java语言的流行,游戏与Java技术平台有了更多的合作。
Java有很多优秀性能,致使越来越多的程序开发人员愿意使用Java语言开发程序。
在互联网风行的今天,Java技术开发的游戏与网络通讯技术对接,开拓出一片广阔的领地。
中国象棋浓烈的益智趣味,使得它在竞技博弈类游戏的中脱颖而出,博得众多玩家的青睐。
说到游戏深度,也非文化底蕴浓厚的象棋莫属。
它的操作过程既能深谋远虑,又可步步为营,不仅能够激发玩家高瞻远瞩、排兵布阵的逻辑性,还可以启发玩家对“得失取舍、轻重缓急”等命题进行哲学思考;在修身养性的同时,既能够交朋结友,又可以消遣娱乐,好处多多,真可谓一举多得。
Java开发技术近几年在游戏开发领域日趋成熟,得到多方面的认可。
而象棋游戏的开发,也有很多先例,包括腾讯QQ象棋,JJ象棋等等。
也就是说,本课题有很多值得借鉴和参考的前作。
这对于研究而言,是一件非常幸运的事。
目前,作为一名学生,本课题的研究并不是以商业营利为目的,主要希望能够通过这款中国象棋游戏软件的开发,熟练地掌握在Eclipse下的Java开发技术,灵活运用Socket网络套接技术、数组和字符串等知识。
根据具体的分析和设计尝试实现一款简单的对弈软件,深入浅出地找出象棋游戏规律,了解并运用各类棋子的行棋套路,以便获得实用可行的开发方法,通过掌握这项技能丰富自己的实践知识库[1]。
1.2课题研究的内容与意义
中国象棋游戏系统是以Java语言为开发基础,采用C/S(Client/Server,客户机/服务器)体系结构设计的一款中国象棋游戏研究。
C/S架构的原则是将计算机应用任务分解成多个子任务,将所要实现的功能模块分工完成,即功能分布原则。
客户端完成数据处理,数据表示以及用户接口功能,服务端完成数据管理系统的核心功能。
这种客户请求服务,服务器提供服务的处理方式是一种新型的计算机应用模式。
C/S架构的程序开发使用的是网络套接技术,从客户端和服务器端两个方面进行深入研究,细化完善。
服务器端是开发客户端的基础,只有以服务器框架为基础,才能在开发客户端过程中进行一些相关的测试,这是这类游戏的基本开发模式。
通过对系统进行可行性分析、功能模块分析和需求分析,进而总结归纳出系统应当具备的功能和所需完成的任务。
首先通过技术、经济和社会等方面的分析,归纳出开发的象棋游戏应该具备怎样的功能,通过需求分析进行详细的评估报告。
根据象棋本身的规则属性,以及各个棋子(包括将(帅)、士(仕)、象(相)、马、车、炮(炮)、卒(兵))的走法规则进行研究并且进行算法设计,本研究还打算增加一些辅助的趣味功能,比如悔棋、认输、求和等功能。
在系统研究过程中,我们还会根据各自棋子设计的需要而恰当地使用数组进行数据及状态的存储,联机等操作也会尽量使用字符串进行服务器和客户端之间的通信,并且为了让桌面美观,还会使用Java图形技术对图片应用抗锯齿等操作;Socket网络套接技术的使用,数组和字符串的运用,以及匿名内部类实现接口中的方法等技术都会在开发过程中加以利用。
本课题的意义在于通过对Java语言各种基础的学习,把四年来所学的理论知识运用到具体的实践操作当中,务必熟练掌握Java的运行环境,各种控件,基本工具抽象类的接口等技术。
对于流程控制的把握,实现各项功能的拿捏,这是一个分析、归纳和表达的过程,是检验综合能力的一种方式。
比如遇到问题,应该采取怎样的处理是方式,并且在实际操作中的灵活运用所学知识的能力,这是检测综合能力的关键,而毕业设计的撰写和研究相当于给了我们一次系统的训练,是学以致用的直接案例。
对于个人成长而言,使我知道怎样去剖析事物内部结构,如何去观察事物的发展规律,以及从适当的角度去判断事物的轻重缓急,无论是从时间上,还是从逻辑程度上都是一个提升自我能力的过程,是掌握实际技能不可多得的体验。
学会把压力变作动力,无论是对个人还是对社会,都有推进作用。
就课题本身而言,对中国象棋游戏的开发一个有了比较全面的了解,对传统对弈的继承,对全新技术的引用,同时为以后添加新元素打下坚实的基础,通过多方面的考虑,作为一个可持续发展的游戏,需要不断改进,本系统的设计与实现相当于一个过渡的过程,具有一定的积极意义[2-3]。
1.3技术思路
本系统是采用Java语言开发一款中国象棋对弈软件,以网络对弈的形式实现中国象棋的基本功能和主要模块。
C/S体系结构是本系统的基础架构,两端非常突出的硬件环境,可以合理地实现分配到Client端和Server端的任务,使系统的通讯成本降低。
服务器端通过多线程的开发与运用,发送和接收通信信息,聊天和用户状态,以及棋局处理模块等功能,在客户端需要实现菜单栏、窗口界面、棋盘、棋子、昵称等模块。
在软件的开发过程中,先构建服务器端主类框架,实现相关的窗口,按钮,以及相应的功能,接着开发服务器线程和服务器代理线程,为客户端的开发运行做准备。
服务器端开发完毕后,着手客户端主类框架的开发,完成界面的搭建和一些简单的业务处理,实现初始化方法,以及主类业务代码的框架的落实;随后进行客户端代理线程的开发,对连接的处理等;客户端代理线程完成后,紧接着对象棋规则主类框架进行开发,对应相应的棋子规则的处理方法的实现;然后进行开发棋盘类代码框架,实现鼠标事件的处理方法。
在完善主类业务代码过程中,对相应的按钮进行相关的事件处理。
棋盘棋子的背景色和选中后的棋子颜色是通过声明常量实现的,声明常量的优点在于有利于修改程序。
网络通信的过程是代理线程完成的,服务器端代理线程和客户端代理线程之间的连接是通过字符串传递消息实现的。
服务器端有什么变化客户端会收到相应的信息,反之亦然。
再采用Socket网络套接技术实现建立接口,传输数据等功能。
基于Java的中国象棋游戏系统是图形界面、线程、监听器和文件等技术的综合运用[4]。
1.4本章小结
本章简单介绍了关于象棋游戏的历史演变,Java语言与游戏开发之间的关系;简单概述了设计思路,以及开发过程中需要研究的内容和方向。
内容主要集中在中国象棋软件的基本功能实现上,使玩家可以在线游戏。
2系统分析
系统分析是开发软件之前必须完成的一些准备工作,为软件的顺利开发打下良好的基础,知道自己要做什么,并且计划好要怎么做,同时它也是系统设计的前提,所以系统分析务必要详细,防止造成项目的返工,带来不必要的损失。
2.1可行性分析
2.1.1技术可行性
Java是SunMicrosystem公司开发的编程语言,Java语言具有高效性、通用性、平台移植性和安全性等特点。
通常运用Eclipse软件进行编写,并进行编译执行。
Java是一种非常新的语言,并且具有不断更新的功能,同时具有面向对象、分布式、解释执行、体系结构中立、可移植性、多线程、以及动态性等特点。
同其他编程语言比起来,还要数Java技高一筹。
中国象棋游戏系统的开发之所以使用Java语言,主要体现在以下几个方面:
(1)灵活性
“一次编写,到处运行”的Java语言是非常灵活的,它支持部署和开发环境中的各种变化。
即使改变运行平台,也只需要做少量的改动,有时甚至不用修改也能在不同的平台运行。
(2)厂商的广泛支持
“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件的关注和认同。
这与所倡导的注重精英和封闭式的模式完全不同。
(3)用户的广泛支持
简洁方便的Java语言拥有良好的用户基础,它没有C语言包含的指针、结构、单元等晦涩难懂、容易混淆的特性,备受程序开发员的青睐。
它并不局限于某一个特定的公司。
在互联网上,有许多资源以及Java示例代码。
另外,程序员还可以使用很多免费软件或共享软件和许多应用程序代码[5]。
2.1.2经济可行性
经济可行性是指可以使用的资源的可行性,主要分析核算成本与效益之间的关系,从经济角度判断该系统的开发成本是否小于它的预期经济效益。
当发布开发任务后,技术开发人员首先需要研究开发任务,明确开发思路,判断出现的问题是否有简单便捷、合理可行的解决方法。
经验告诉我们,在系统的实际开发过程中,有许多问题不可能在预期的规模内解决。
如果某些问题无法很好的解决,那么花费在该工程上的任何时间、资源和经费都是浪费的。
因此经济可行性分析是一项不可少的内容。
本课题的研究范畴不包括商业营利,系统开发是根据所学Java知识,采用Java开发环境Eclipse软件来完成,然后通过图书馆借阅的书籍及网上搜索的相关资料进行撰写研究,在经济方面,所有的成本花销都自主承担,具有一定的经济可行性[6]。
2.1.3社会可行性
如今,计算机科技的飞速发展,致使计算机的使用率不断地增长,个人计算机得到广泛的普及。
上至老翁,下及孩童,现代人轻易就能熟练地掌握计算机的基本使用技巧,而人们也习惯利用网络平台进行学习工作和娱乐互动,在这样的趋势下,更有利于人力资源的有效利用。
而且本文研究的象棋游戏软件的简单易用,人们能够轻松地使用该软件进行对弈活动。
2.2系统功能模块分析
本软件要实现多用户在线弈棋,所以采用C/S架构,服务器端和客户端分别完成各自的功能。
服务器需要实现启动服务器,两大维护在线用户信息,接收客户端信息,向客户端发送信息等功能。
客户端需要实现连接服务器,选择玩家挑战,接受或拒绝挑战,向服务器发送信息,接受服务器传来的信息等功能。
中国象棋的棋盘是由9条竖线和10条横线相交组成,共有64个方格,90个交点。
棋子就摆在交叉点上。
中间部分,也就是棋盘的第五,第六两横线之间末画竖线的空白地带称为“河界”。
在中国象棋的棋盘中间,常有一块空白区域,上写有“楚河”、“汉界”字样,这是以下棋比况历史上的“楚汉战争”。
在棋盘的两端,各有一个由四个小方格组成的“米”字型的大方格,它有九个棋点,又称作“九宫”,象征着中军帐。
中国象棋总共有32个棋子,可以分成7类,即将(帅)、士(仕)、象(相)、马、车、炮(跑)、卒(兵),每类棋子都有自己的行棋规则。
将(帅)同属一类,只能在九宫之内的棋点活动,一次只能移动一个棋点。
士(仕)也只能在九宫之内(“米”字型)活动,但它和将(帅)不同,士(仕)只能走九宫图内的斜线。
象(相)走“田”,不能过河,当“田”中间那个棋点落有别的棋子,象(相)不能移动。
马走“日”,可以跳到棋盘的任意位置,但假如马在“日”字左上角位置,恰好下方坐落一粒棋子,则马不能跳到“日”字右下角地方,俗称“蹩马腿”。
以此类推,出现此类情况马不能跳动。
车走直线,是最活跃的一个角色,只要直线畅通无阻,车可以任意移动多少个棋点。
炮(炮)的移动性能和车相似,不同的是,它要隔一个棋子才能杀伤对方。
卒(兵)一步只能挪一个棋点,未过河之前,只有向前移动一种选择,过河之后可以向左向右,唯独不能向后[7]。
2.3需求分析
目前生活节奏加快,大多数象棋爱好者因工作繁忙而无暇进行面对面的棋艺切磋交流,技痒难挠之时往往通过计算机或手机下载象棋软件满足需求。
针对这一社会现状,通过与一部分象棋爱好者交流及问卷调查,本课题研发的象棋游戏至少需要具备服务器端、客户端和其他辅助功能的基本需求。
2.3.1服务器端
在服务器端需要具备以下功能:
(1)可以指定服务端口号。
(2)可以支撑多人同时在线。
(3)可以显示在线用户信息,并且随时更新。
(4)不允许玩家同名。
2.3.2客户端
在客户端需要具备以下功能:
(1)能通过主机IP及端口号登录到服务器。
(2)可以显示当前所有在线用户。
(3)可以从在线用户列表中选择玩家进行挑战。
(4)可以接受或拒绝挑战。
(5)如果对方正在与其他玩家对弈,则给出相应的提示信息。
(6)象棋规则一定要严密。
(7)棋子样式采用最普通的橡胶式象棋,即棋子背景是黑色,棋子分为红色和白色。
2.3.3辅助功能
除了以上功能外,还可根据实际开发操作添加一些辅助功能:
(1)开始
对弈双方启动客户端后,点击“连接”按钮接上服务器,选择在线用户下拉列表中选择玩家发出挑战,若对方接受挑战,则双方正式开始游戏,红方先走棋。
若对方拒绝挑战,则继续选择别的用户发出挑战。
(2)计时
计时是预设下一盘棋和走一步棋在正常范围内所需要的时间,若是玩家在设定的局时内没有下完,则挑战失败,默认挑战者输;若是在规定的步时内没有进行走棋操作,则默认该方为输家。
(3)悔棋
有时,有些玩家粗心大意,或者有操之过急等失误,通过协商,获得对方的同意可返回上一步操作。
(4)求和
有时对弈双方势均力敌,难分高下,当有一方玩家认为这一棋局难以分出胜负,就可以操作此功能,若得到对方的同意,则作和棋处理。
(5)认输
当一方玩家认为己方大势已去,无力回天,为了尽快进行下一局对弈重新开始,就可进行此操作,用不着对方同意便可直接判定对方获胜,己方输阵。
(6)聊天
用户双方可以进行文字互动,进行一些不影响对弈的简单的沟通。
2.3.4棋盘和棋子功能
(1)中国象棋是双方在有着9条竖线和10条横线的棋盘上对弈,竖线和横线的交叉点称为棋点或对弈点,每个棋子都是在棋点上行走,而不是在方格中移动。
(2)河界将棋盘分成两等分,每一边都有一块9个棋点组成的九宫。
①“将、帅”只能在九宫内移动,并且“将”和“帅”每一步只可以水平或垂直移动一个棋点;
②“士、仕”只能在九宫内移动,每一步只可以沿着对角线移动一个棋点;
③“象、相”必须一次沿着对角线方向走两个棋点,但它不能过河也不能跳过或穿越障碍,即象不能别眼;
④“马”每一步只可以水平或垂直移动两个棋点,但必须按对角线向左或向右移动,中国象棋的马不能跳过障碍,即不能拗马腿;
⑤“车”可以水平或垂直方向任意移动一个无障碍的点;
⑥“炮、炮”移动起来和车类似,但它必须跳过一个棋子来吃掉对方的一个棋子;
⑦“卒、兵”每步只能向前移动一个棋子,过河以后,它便增加了向左右移动的能力,不允许向后移动[8-9]。
2.4本章小结
本章通过需求分析和可行性分析对系统做了一个详细的分析,从象棋软件的功能需求、技术可行性、经济可行性和社会可行性等方面分析,从而得出结论,本课题所要实现的中国象棋游戏软件是可行的。
3系统设计
3.1中国象棋游戏的结构设计
中国象棋游戏的主体是客户端,整个游戏的规则都在客户端,服务器端只是在中间传递数据,起到一个中介的作用。
因为只有有了服务器的基础框架,客户端在开发过程中才能进行一些必要的测试,这是该类游戏一般的开发流程。
服务器端运行后,用户可以通过运行类进入服务器的主界面。
服务器线程是服务器启动后创建并启动的第一个线程,该线程主要用于接收客户端的连接,并为每一个连接分配一个服务器代理线程。
服务器代理线程主要用于接收客户端传来的信息,并将该信息转发给对应的另一客户端。
服务器为所有客户端都分配了一个该类线程实例,单独为特定客户端进行服务。
同时每一个服务器代理线程都有能惟一标识其的名称,即昵称。
客户端运行后,用户通过运行类连接服务器,也是通过在该类的窗体中与其他玩家进行对弈。
客户端代理线程主要用于接收服务器传来的消息,并根据不同的消息进行相应的业务处理。
客户端与服务器连接,完成通信框架的开发。
中国象棋游戏服务器端和客户端的结构图如图3-1所示。
图3-1C/S结构图
棋盘类除了完成绘制棋盘的作用,同时还负责下棋逻辑的处理。
棋子规则类的开发,下棋的规则和棋子行棋着法的生成。
对于棋盘的开发,主要是运用数组下标代替像素坐标,将棋子放在数组里。
这样对于每一个位置的状态,都可以通过对应的数组状态进行确定,非常的方便。
由于棋盘粘附在桌面上,所以也要用到网络套接字技术。
游戏通信主要是通过字符串传递信息。
通过使用抗锯齿这个知识点,使象棋棋子变的更加的平滑,美观。
这里用到了Swing的相关知识。
不过,由于抗锯齿占用很大的系统资源,如果使用不当会严重影响游戏的性能。
中国象棋对弈过程是由红方先走棋,每走一步需要判断是否结束,若尚未分出胜负,则由对方走棋,直到分出胜负为止。
中国象棋对弈流程图如图3-2所示。
图3-2对弈流程图
服务器和客户端完成开发后,若要进行正常的对弈,主要通过走棋规则和吃棋规则来实现。
中国象棋游戏的客户端即是游戏界面,它包括菜单栏,棋盘和棋子,以及相关的信息提示。
各个棋子的行棋规则和吃棋规则是开发过程的重点和难点。
此软件的层次结构图如图3-3所示。
图3-3中国象棋游戏的层次结构图
3.2系统的功能模块设计
3.2.1计时功能
在正式开始游戏之前,系统有默认的局时和步时,也可由挑战者自行设定局时和步时。
局时是限制一盘棋的时间,设定的时限一到则该局结束,由系统默认挑战者挑战失败;走一步棋允许使用的最大时限称为步时,为了防止玩家拖延超时,若玩家超时,则系统默判该玩家放弃走棋,对家获胜。
在通常情况下,局时是分钟数,步时是秒数。
设置局时和步时,需要输入自然数,当数值设置为0时,默认没有时间限制。
运用Thread方法定义局时、步时倒计时线程,“intJtime=0,Btime=0;”定义局时、步时限制。
“intjtime;intRbtime,Bbtime;”显示双方的局时、步时的剩余时间。
用setBounds()设置双方局时、步时在界面上的显示位置。
在游戏开始之前设置局时、步时,正式开始游戏,则启动局时、步时倒计时线程。
当局时或步时完毕时,结束进程,即游戏结束。
3.2.2悔棋功能
在对弈过程中,误操作和失误的一方可以向另一方提出悔棋要求,双方经过协商,请求的一方得到对方同意后,系统执行悔棋程序,可返回上一步的状态。
通过定义VectorVar来保存棋子的动作,定义悔棋方法“HuiQi(intn)”。
在游戏进行时,当某方点击悔棋按钮,则认为是那方要求悔棋,由另一方同意悔棋后,执行“HuiQi(intn)”方法,返回到该
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中国象棋 游戏 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)