JAVA--中国象棋.doc_第1页
JAVA--中国象棋.doc_第2页
JAVA--中国象棋.doc_第3页
JAVA--中国象棋.doc_第4页
JAVA--中国象棋.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计说明书 NO.19中国象棋1 设计目的通过对Java各种基础的学习,了解java的运行环境,学会java面向对象的设计。以及java各种控件及图像用户的界面的设计使用,分别掌握基本工具继承抽象类 接口。输入输出,流程控制,开发环境,实现简单的功能设计,帮助熟练的掌握有关java的知识结构体系, 通过实习掌握语言的语法结构,理解类和对象的概念,准确的使用各种数据类型,对面向对象中的继承和多态的概念要理解、会使用,在程序中提高代码的重用性,使设计的程序结构清晰、易于维护。2 设计方案论证2.1 需求分析(1)功能需求(1) 用户登录验证功能。(2) 每一个用户可以把自己的计算机做为主机。(3) 每一个用户可以寻找主机,并且与主机建立连接。(4) 用户在对弈过程中,可以悔棋,而且可以认输。(5) 没一个用户都用积分,当赢了比赛后,用户的积分就会增加。(6) 有聊天室功能,即用户在对弈过程中可以与对方聊天。(7) 在线用户显示功能。(2)性能需求在开发学生学籍管理系统时,该项目使用的软件开发环境如下:操作系统:Windown vista数据库:SQL Server2005开发工具:Myeclipse2.2 总体设计设计C/S网络版中国象棋,也就是客户端与服务器端都是java应用程序。具体要求如下:(1) 中国象棋是双方在有着9调竖线和10条横线的棋盘上对弈,竖线和横线的交叉称为棋点或对弈点,每个棋子都是在棋点上行走,而不是在方格中行走。(2) 河界将棋盘分成两等份,每一边都有一块有9个点组成的九宫,棋子“将”,“帅”和“士”只能在九宫内移动,并且“将”和“帅”每一步只可以水平或垂直移动一个棋点;“士”只能在九宫内移动,并且它每一步只可以沿着对角线移动一个棋点;“象”必须一次沿着对角线方向走两个棋点,但它不能过河也不能跳过或穿越障碍,即“象”不能别眼,“马”没一步只可以水平或垂直移动两个棋点,但必须按对角线向左或向右移动。中国象棋的“马”不能跳过障碍,即马不能别腿。“车”可以水平或垂直方向移动人一个无障碍的点。“炮”移动起来和车类似,但它必须跳过一个棋子来吃掉对方的一个棋子,被跳过的那个棋子称为桥或者屏风。“兵”每步只能向前移动一个棋子过河以后,它便增加了向左右移动的能力,并不允许向后移动。(3) 用户开始运行程序后,进入用户登录界面,用户输入正确的用户名和密码才可以进入中国象棋主界面。(4) 用户进入主界面后,单击“建立主机”按钮,就把该计算机作为主机,等待其他用户登录到这台主机后,才可以进行对弈。(5) 当有用户登录到这台主机上士,用户单击“开始”按钮就可以开始想起对弈了,在对弈过程中,用户可以单击“悔棋”按钮,就可以实现悔棋,用户还可以单击“认输”按钮,向对方认输。(6) 如果用户赢了,用户的积分就会增加。(7) 用户在对弈过程中可以聊天。2.3 详细设计2.3.1 总体功能图根据对需求所做的分析,中国象棋游戏需要实现的基本功能应包括以下几个方面:(1) 用户登录验证功能(2) 提供棋盘和棋子;(3) 设定棋子的走棋规则;(4) 可以悔棋;(5) 可以聊天;(6) 判断胜负;(7) 建立主机和与主机建立连接;(8) 显示所有在线用户; 游戏可以再任何装有java运行环境的电脑中运行,界面简洁,大方,操作简单,方便,容易上手,满足中国象棋游戏爱好者智力娱乐的需求。根据系统功能需求,其总体功能图如图1所示: 图1总体功能图2.3.2总体流程图和中国象棋功能模块 根据对中国象棋游戏的功能分析,设计得到中国象棋游戏的总流程图如图2所示: 图2总体流程图 中国象棋模块是中国象棋游戏额核心部分,它实现了游戏的最基本也是最重要的功能。该模块中含有连接、退出系统和开始游戏功能三项功能。功能模块结构图: 图3 中国象棋功能模块结构图2.3.3数据库设计数据库及表结构的建立中国象棋系统共创建了一个dengluzhuce数据库,在该数据库中创建了一个login表。数据库是用Access创建的,创建方法是:新建空数据库。login表是用来存储用户信息的,login数据表的创建如下表所示:表1数据表字段名称数据类型说明用户名文本密码文本积分文本 是否在线数字JDBC-ODBC的建立为了同dengluzhuce数据库建立连接,首先要创建一个ODBC数据源,打开Windows中的控制面板,对于Windows XP选择“性能和维护”“管理工具”“数据源(ODBC)”;创建好user数据源。现在有了数据源,这个数据源就是一个数据库。为了要连接到这个数据库,首先要建立一个JDBC-ODBC桥接器;Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);这里,Class是包java.lang中的一个类,该类通过调用静态方法forName加载sun.jdbc.odbc包中的JdbcOdbcDriver来建立桥接器。JAVA 数据库的连接首先使用java.sql包中的Connection类声明一个对象,然后在使用DriverManager调用它的静态方法getConnection创建这个连接对象,建立连接时应捕捉SQLException异常:Try Connection con=DriverManager.getConnection(“jdbc:odbc:user”,”,”)Catch(SQLException)这样就建立到数据库dengluzhuce的连接。2.3.4 各部分功能流程图 (1)开始游戏该功能为本游戏的最核心的部分,它实现了中国象棋游戏的最主要的操作,是其他功能的基础。主要功能包括:1. 下棋2. 提示下棋方3. 悔棋4. 认输5. 求和开始游戏流程图如图4所示: 图4 开始游戏流程图(2)连接功能连接功能是开始游戏前必须进行的步骤,连接有建立主机、刷新主机、建立连接。用户正确登陆系统后,进入中国象棋主界面,用户可以点击建立主机,把自己的电脑作为主机,然后等待其他用户连入就可以开始游戏了,用户还可以刷新主机,找到一个主机然后连入就可以开始游戏了。连接功能流程图如图5所示: 图5 连接功能流程图(3)用户登陆注册模块用户登陆注册模块提供用户登陆和注册功能,用户运行客户端程序后,首先进入的是用户登陆界面,用户只要输入用户名和密码就可以进入中国象棋界面,如果用户没有用户名,就点击“注册”按钮进行注册,注册完成后就可以输入刚才申请的用户名和密码进入中国象棋界面。用户登陆功能流程图如图6所示: 图6 用户登陆功能流程图用户注册功能流程图如图7所示: 图7 用户注册功能流程图(4) 聊天模块聊天模块提供给用户聊天,用户进入中国象棋界面后,开始游戏就可以与对方聊天了,用户发送信息给服务器,然后服务器把信息发送给对方,在对方界面显示。聊天模块流程图如图8所示: 图8 聊天模块流程图2.3.5 算法设计(1)棋盘、棋子绘制的算法设计本中国象棋有限的棋盘和棋子采用的都是图片,采用图片比较简单,不用绘制那么多条线,用图片来代替棋盘和棋子,只要用Graphics对象g调用drawImage()方法就可以把突变加载进去。棋盘的实现如下图9所示: 图9 棋盘实现的相关代码棋子的实现如下图10所示: 图10 棋子实现的相关代码(2)棋种走棋规则的算法设计象棋的每种棋种都有它们自己的走棋规则的,例如,车走直线,中间不能有棋子;马走“日”;象走“田”等等。下面我们就拿象棋棋子车,马,炮,象、士、卒、将的走棋规则算法分别来进行详细的说明: 1 “车”的走棋规则的算法设计“车”,它只能走直线,且中间不能有任何棋子,设计时分为两种情况来考虑,一种是纵向行走;一种是横向行走。用if语句来判断实现,例如车纵向行走,首先,用if(startI=endI)来判断棋子是否纵向行走,接着再用判断语句if(pointstartIj.isPiece()来判断中间有没别的棋子。横向行走同理。如果棋子车符合以上的走棋规则,则可以走动,否则棋子强制放回原处。现在假设车的棋点坐标为(i,j),i为横坐标,j为纵坐标,再设x,y为棋盘内任意值。算法设计流程图如图11所示: 图11 “车”的走棋规则算法设计流程图2 “马”的走棋规则的算法设计“马”,它只能走“日”字格,而且马腿不能被其它的棋子压到。设计时可两种情况来考虑,一种是横向走两个棋点,纵向走一个棋点;一种是纵向走两个棋点,横向走一个棋点。用if语句来判断,例如马横向走“日”,首先,用if(xAxle=2&yAxle=1)来判断棋子是否横向走两个棋点,纵向走一个棋点,接着再用判断语句if(pointstartI+1startJ.isPiece()来判断马腿是否被其它棋子压着。纵向走“日”同理。如果棋子马符合以上的走棋规则,则可以走动,否则棋子强制放回原处。现在假设马的棋点坐标为(a,b),a为横坐标,b为纵坐标,再设x,y为棋盘内任意值。算法设计流程图如图12所示:图12 “马”的走棋规则算法设计流程图3 “卒”的走棋规则的算法设计“卒”,它的行走规则分两种情况。一种是棋子没过河界,另一种是棋子过了河界。用if语句来判断,首先,用if(endJ=6)语句来设定棋子过了河界,紧接着设定棋子在过了河界的情况下只能向前、向左、向右行走一个棋点。如果棋子卒符合以上的走棋规则,则可以走动,否则棋子强制放回原处。现在假设卒的棋点坐标为(i,j),i为横坐标,j为纵坐标,再设x,y为棋盘内任意值。算法设计流程图如图13所示:图13 “卒”的走棋规则算法设计流程图4 “将”的走棋规则的算法设计“将”,它只能在“九宫”中行走,而且每次只能横着或者纵着行走一棋点。直接用if语句来判断,首先,用if(endI=4)来判断棋子是否是在“九宫”里行走,接着判断棋子是否是横向或纵向只走一个棋点。如果棋子将符合以上的走棋规则,则可以走动,否则棋子强制放回原处。现在假设将的棋点坐标为(i,j),i为横坐标,j为纵坐标,再设x,y为棋盘内任意值。算法设计流程图如图14所示:图14“将”的走棋规则算法设计流程图5 “炮”的走棋规则的算法设计“炮”,它只能走直线,且中间有且只能有一个棋子。算法设计流程图如图15所示:图15“炮”的走棋规则算法设计流程图6 “象”的走棋规则的算法设计“象”,它只能走“田”字格,而且不能过河,象腿不能被其它的棋子压到。这样只有一种情况考虑,那就是纵向走两个棋点,横向也走两个棋点。用if语句来判断,首先,用if(xAxle=2&yAxle=2&endJ=5)来判断棋子是否走田字格,而且不能过河,接着再用判断语句if(pointcenterIcenterJ.isPiece()来判断象腿是否被其它棋子压着。如果棋子象走动符合以上的走棋规则,则可以走动,否则棋子强制放回原处。现在假设象的棋点坐标为(i,j),i为横坐标,j为纵坐标,再设x,y为棋盘内任意值。算法设计流程图如图16所示:图16“象”的走棋规则算法设计流程图7 “士”的走棋规则的算法设计“士”,它只能在“九宫”中行走,而且每次只能斜着行走一格。这样只有一种情况来考虑,即纵向走一个棋点,横向走一个棋点。if语句来判断,if(endI=4&endJ=3&xAxle=1&yAxle=1)。如果棋子士符合以上的走棋规则,则可以走动,否则棋子强制放回原处。现在假设士的棋点坐标为(i,j),i为横坐标,j为纵坐标,再设x,y为棋盘内任意值。算法设计流程图如图17所示:图17“士”的走棋规则算法设计流程图3运行结果与分析用户登录界面:图18用户登陆界面用户注册界面:图19用户注册界面中国象棋主界面: 图20中国象棋主界面中国象棋对弈一方界面: 图21 中国象棋对弈一方界面4 设计体会通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,特别是对于课外知识的积累也提高了不少,对于图形用户界面的设计从课本的ATW包扩展到SWING包,利用Swing编程设计漂亮的图形用户界面,在设计的过程中我遇到了很多的问题,不过在老师和同学们的帮助和自己的思考下还是很好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。特别它还让我学会了在网上查阅那些无限的资料,让我明白知识是不能只限于课本,当然更不能只满足于课本。 我做的是中国象棋,遇到最难的是中国象棋中涉及的算法,比如“车”、“马”、“卒”、“将”、“炮”、“象”、“士”的走棋规则算法,它士用棋点数组来存储各个棋子的位置,当用户移动一个棋子后,就用棋点数组来判断棋是否符合棋子的走棋规则,这种算法设计很精妙,让我在以后涉及到这种的算法,我就可以用这种方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论