欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    java课程设计报告.pdf

    • 资源ID:73491733       资源大小:2.81MB        全文页数:66页
    • 资源格式: PDF        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    java课程设计报告.pdf

    程序语言综合课程设计报告程序语言综合课程设计报告专业:计算机科学与技术班级:072 班学号:21 号姓名:石林宾时间:目录课程设计任务书.-5-题目一 Hannoi 塔.-6-1设计内容及要求.-6-汉诺塔算法的基本要求.-6-需实现的主要功能.-6-2.需求分析.-6-界面及布局设计.-6-A、B、C 座的实现方法.-7-圆盘的实现方法.-7-添加背景音乐的方法.-7-改变背景和盘子颜色的方法.-7-设置时间方法.-7-文件保存方法.-8-3总体设计.-8-总体功能图.-8-总体流程图.-9-4主要功能设计流程.-10-A、B、C 座实现流程图.-10-圆盘画法流程图.-10-添加背景音乐流程图.-10-改变背景颜色流程图.-11-改变盘子颜色流程图.-11-改变盘子数目流程图.-12-改变最大和最小盘子大小流程图.-12-文件保存流程图.-13-5代码实现.-13-类之间关系图.-13-运行效果图.-14-程序打包发布过程.-16-6总结与说明.-16-7部分原代码(见附录 1).-16-题目二 中国象棋(C/S 版).-17-1设计内容及要求.-17-中国象棋的基本要求.-17-需实现的主要功能.-17-2需求分析.-18-数据库设计.-18-服务器端和客户端的数据传输方式.-19-服务器端功能设计.-19-客户端功能设计.-20-3总体设计.-20-总体功能图.-20-总体流程图.-21-4.详细设计.-22-功能分析和描述.-22-中国象棋功能模块.-22-用户登陆注册模块.-24-聊天模块.-25-5.算法设计.-26-算法概述.-26-棋盘、棋子绘制的算法设计.-27-棋种走棋规则的算法设计.-27-棋子拖动规则的算法设计.-33-悔棋的算法设计.-34-6代码实现.-35-类之间关系图.-35-运行效果图.-36-程序打包发布过程.-39-7总结与说明.-40-8部分原代码(见附录 2).-40-题目三 标准化考试系统.-41-1设计内容及要求.-41-标准化考试系统的基本要求.-41-需实现的主要功能.-41-2需求分析.-42-数据库设计.-42-服务器端和客户端的数据传输方式.-42-服务器端功能设计.-43-客户端功能设计.-43-3总体设计.-45-总体功能图.-45-总体流程图.-46-4数据库设计.-47-数据库及表结构的建立.-47-JAVA 数据库的连接.-48-5.主要功能设计流程.-48-服务器端设计流程图.-48-客户端设计流程图.-49-6代码实现.-50-类之间关系图.-50-运行效果图.-51-程序打包发布过程.-56-7.总结与说明.-57-8部分原代码(见附录 3).-57-附录 1 汉诺塔部分源代码.-58-附录 2 中国象棋(C/S 版)部分源代码.-65-附录 3 标准化考试系统部分源代码.-68-课程设计任务书课程设计任务书课程设计目的:课程设计目的:利用所学高级语言的语法特性,结合数据结构算法、网络知识、文件处理和数据库等知识完成综合题目的设计和代码实现,并培养锻炼分析程序、撰写报告等能力。课程设计要求:课程设计要求:本次课程设计共三周,因而要求每位同学独立完成三道选题,并按教师指定进度要求每天到机房让教师检查,选题的工作量相对较大,需要大家在课外时间也要抓紧,加班完成,机房时间主要用于检查进度和答疑。课程设计选题:课程设计选题:课程设计以JAVA 课程设计(第二版)为主要参考书,同学也可以自拟题目,但需提前报老师批准。主要选题为:1、算法题目任选其一:第三章 Hannoi 塔,要求按照 P75 的的题目要求完成;此题也可以“积木世界”替代,但必须独立完成;2、游戏题目任选其一:第五章的走迷宫、第六章的模板游戏、第七章的扫雷游戏和第八章的中国象棋打谱游戏。要求增加内容:背景音乐;成绩记录;背景图片;查看英雄榜。3、管理系统任选其一:第 11 章标准化考试系统和第 12 章数据库通用查询系统任选一个,要求:B/S 架构;用数据库存储数据;客户端要求用小应用程序实现。课程设计进度安排:课程设计进度安排:本次课程设计共计 15 个工作日,因而每个题目要求 3-4 天内完成,最后 3 天完成报告撰写,任何同学没有得到老师的许可,不可以请假或提前离校。课程设计报告要求:课程设计报告要求:课程设计报告要求用 word 排版,有目录,目录自动生成,报告中所有的图要求用 Visio 画。报告的主要内容是对程序设计思想的描述和设计过程的分析,避免直接附代码。题目一题目一 Hannoi Hannoi 塔塔1 1设计内容及要求设计内容及要求汉诺塔算法的基本要求汉诺塔算法的基本要求(1)设计 GUI 界面的 Hannoi 塔。汉诺塔中有三个座,名字分别为 A,B,C。初始状态时 A 塔上有 3 个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在 A 座上。用户可以用鼠标选中盘子,然后通过拖动鼠标来移动盘子。释放鼠标来放置该盘子。(2)程序要求用户在移动盘子的过程中,不允许吧大盘子放置在小盘子的上面,用户最终要完成的是把 A 座上的全部盘子移动到 B 座或 C 座上。(3)用户可以通过 Hannoi 塔界面的提供的改变盘子数目功能来改变盘子的数目,同时可以改变盘子的大小以及改变盘子和界面的背景颜色,而且还可以选择控制背景音乐的播放。(4)用户可以通过单击 Hannoi 塔界面上提供的按钮,让程序自动完成把 A 座上的盘子全部移动到 C 座上。(5)用户在移动盘子的过程中,可以随时单击 Hannoi 塔界面上提供的按钮,重新开始。需实现的主要功能需实现的主要功能完成汉诺塔的“手工移动演示”;完成汉诺塔的“自动移动演示”;增加计时功能,即显示用户完成移动盘子所花费的时间;用户可以设置最大和最小盘子的大小;用户可以选择播放和暂停背景音乐;用户可以设置盘子的数目;用户可以设置盘子的颜色以及背景颜色;用户可以将自动移动盘子的文本信息保存到文件;2.2.需求分析需求分析界面及布局设计界面及布局设计系统的整体布局为 BorderLayout 布局,采用了按钮、面板、复选框、文本框、文本区和拆分窗格等组件,按钮的有以下几个功能:1.可以改变盘子数目;2.可以改变盘子大小;3.可以改变盘子的颜色和背景颜色;4.可以重新开始游戏和自动演示搬运盘子;5.可以保存自动演示的文本信息;复选框可以控制背景音乐的播放和暂停,拆分窗格放入几个面板,面板全都是采用空布局。A A、B B、C C 座的实现方法座的实现方法Java 支持图形与图像功能,A,B,C 座的实现就是利用 java 的这个功能,就是利用 java 2D技术。java 拥有强大的二维图形处理能力,绘制A,B,C 座就是使用 paint(Graphics g)方法,通过Graphics 对象 g 调用 drawLine()方法来绘制三条竖线,然后通过 Graphics 对象 g 调用 fillRect()方法绘制出矩形区域,然后根据盘子数目在每条竖线上调用()方法绘制相同数目点,最后调用drawString()方法绘出 A 座,B 座,C 座,这样就实现了 A 座,B 座,C 座的绘制。圆盘的实现方法圆盘的实现方法JButton 是 java 系统提供的类,实现圆盘的类 Disc 继承 JButton 类,所以 Disc 类是 JButton的一个子类,创建的一个对象是 Tower 容器中的一个按钮用来表示 Tower 中的“盘子”,盘子对象是一个按钮,这样可以加入监视器,从而可以移动盘子。添加背景音乐的方法添加背景音乐的方法该功能模块提供游戏的背景音乐设置,它可以根据游戏者的喜好来选择在游戏进行的时候要不要启动背景音乐。系统默认的是启动游戏同时启动背景音乐。背景音乐是通过复选框JCheckBox来控制音乐的播放和暂停,主要是通过复选框加入监视器来控制的。背景音乐利用FileInputStream来 获 取 音 乐 文 件,然 后 通 过AudioPlayer的start(newContinuousAudioDataStream()方法来播放音乐,当复选框没被选中的话,AudioPlayer 调用stop(new ContinuousAudioDataStream()方法来暂停音乐。改变背景和盘子颜色的方法改变背景和盘子颜色的方法包中有类 JColorChooser,该类有一个静态方法 public static Color showDialog(Componentcomponent,String title,Color initalColor),该方法是创建一个颜色对话框,颜色对话框可果然那句用户在颜色对话框中选择的颜色返回一个颜色对象,当获取到这个颜色对象后,组件通过调用setBackground()方法来设置背景颜色和盘子颜色。设置时间方法设置时间方法要加入计时器功能可以利用 Thread,java 的版本提供了一个很方便的计时器线程 Timer 类,Timer 类利用构造方法 Timer(int a,Object b)创建一个计时器,计时器发生的震铃每隔 1000 毫秒发生一次,方法 actionPerformed 就被执行一次,当执行 actionPerformed 方法就使时间加 1000毫秒,从而使时间每个 1 秒就增加 1,这样就实现了计时功能,而每次发生震铃时会判断 B 塔或 C塔的全部塔点上是否全都有盘子,如果全都有盘子计时器线程就会调用 stop()方法是计时器停止计时,并且会弹出完成游戏对话框。文件保存方法文件保存方法文件保存主要是利用文件对话框和输入输出流来实现的。汉诺塔的自动演示功能会把演示步骤显示在文本区中,我们利用文件对话框选择要保存到那个文件,然后利用BufferedWriter 类的write 方法把文本区的文字写入到已经选择的文件中。3 3总体设计总体设计总体功能图总体功能图根据对需求索做的分析,要完成 Hannoi 塔的设计,我们必须实现 Hannoi 塔的几个基本功能:1.完成汉诺塔的“手工移动演示”;2.完成汉诺塔的“自动移动演示”;3.增加计时功能,即显示用户完成移动盘子所花费的时间;4.用户可以设置最大和最小盘子的大小;5.用户可以选择播放和暂停背景音乐;6.用户可以设置盘子的数目;7.用户可以设置盘子的颜色以及背景颜色;8.用户可以将自动移动盘子的文本信息保存到文件;并可在任何电脑中运行,界面简洁、大方,操作简单、方便,容易上手。根据系统需求,Hannoi 塔的总体功能图如图 1-1 所示:主界面改变盘子数目改变盘子大小改变盘子颜色改变背景颜色开始游戏自动演示计时器关闭演示暂停继续保存图 1-1 总体功能图总体流程图总体流程图根据对 Hannoi 塔游戏的功能分析,设计得到 Hannoi 塔游戏总流程,如图 1-2 所示:开始Hannoi塔开始界面Switch开始新游戏改变盘子数目改变盘子大小自动演示改变盘子颜色改变背景颜色背景音乐开始搬运盘子计时器计时数字确定宽和高保存颜色对话框复选框勾选?否暂停音乐播放音乐是重新放置塔保存对话框选择颜色完成游戏保存文件确定退出结束图 1-2 总体流程图4 4主要功能设计流程主要功能设计流程 A A、B B、C C 座实现流程图座实现流程图根据对实现 A、B、C 座的分析,可以画出 A、B、C 座实现流程图,如图 1-3 所示:开始画三条竖线画塔点画矩形区域画A、B、C座六字结束图 1-3 A、B、C 座实现流程图圆盘画法流程图圆盘画法流程图根据对圆盘画法的分析,得到圆盘画法流程图如图 1-4 所示:开始继承JButton设置背景颜色设置盘子编号在塔点放置盘子结束设置盘子所在的塔点图 1-4 圆盘画法流程图添加背景音乐流程图添加背景音乐流程图根据对添加背景音乐的分析,得到背景音乐流程图如图 1-5 所示:开始创建声音流创建AudioData源实现音乐播放结束图 1-5 背景音乐流程图改变背景颜色流程图改变背景颜色流程图根据对改变背景颜色的分析,得到改变背景颜色流程图如图 1-6 所示:开始改变背景颜色按钮颜色对话框选择颜色撤 销确 定setBackground(Color c)结束图 1-6 改变背景颜色流程图改变盘子颜色流程图改变盘子颜色流程图根据对改变盘子颜色的分析,得到改变盘子颜色流程图如图 1-7 所示:开始改变盘子颜色按钮颜色对话框选择颜色撤 销确 定设置盘子颜色结束图 1-7 改变盘子颜色流程图改变盘子数目流程图改变盘子数目流程图根据对改变盘子数目的分析,得到改变盘子数目流程图如图 1-8 所示:开始输入盘子数目确定设置盘子数目重新放入塔结束图 1-8 改变盘子数目流程图改变最大和最小盘子大小流程图改变最大和最小盘子大小流程图根据对改变盘子大小的分析,改变盘子打下流程图如图 1-9 所示:开始输入宽和高确定设置盘子宽和高重新放入塔结束图 1-9 改变最大和最小盘子大小流程图文件保存流程图文件保存流程图根据对文件保存方法的分析,得到文件保存流程图如图 1-10 所示:开始保存按钮文件保存对话框否选择文件?是保存文件结束图 1-10 文件保存流程图5 5代码实现代码实现类之间关系图类之间关系图Hannoi 塔除了要编写的 6 个 java 文件所给出的类外,还需要 java 系统提供的一些重要的类,如 JButton,JCheckBox 等,Hannoi 塔所用到的一些重要的类以及它们之间的关系如图 1-11 所示:图 1-11 类之间的关系图运行效果图运行效果图开始主界面:图 1-12 Hannoi 塔主界面完成游戏时界面:图 1-13 完成游戏时界面自动演示游戏界面:图 1-14 自动演示游戏界面程序打包发布过程程序打包发布过程可以使用命令制作 JAR 文件来发布编写软件。(1)首先用文本编辑器,如 Windows 下的“记事本”,编写一个清单文件:Manifest-Version:Main-Class:HannoiWindow Created-By:(Sun Microsystems Inc.)将保存到 D:Hannoi 塔中,即和应用程序所用的字节码文件保存在相同的目录中。注意:清单文件中的“Manifest-Version:”和之间,“Main-Class:”和主类 HannoiWindow之间以及“Created-By:”和之间必须有且只有一个空格。(2)生成 JAR 文件 D:Hannoi 塔jar cfm *.Class6 6总结与说明总结与说明现在,计算机在我们生活中日趋重要,计算机已经影响到我们生活的方方面面,很多时候我们都离不开计算机,如何学好计算机是我们当前应解决的问题,特别是作为计算机专业的学生来说。现在我们用计算机编写游戏,虽然现在有很多的游戏在我们生活中存在,但是我们也希望有一个属于自己的,所以编写一个自己的 Hannoi 塔游戏非常重要,这样使自己以前学的知识得到巩固,同时可以增强自己的信心,为以后的编程奠定基础。这个 Hannoi 塔游戏是在原有的程序基础上增加了改变盘子数目功能、改变盘子大小功能、改变背景颜色功能、改变盘子颜色功能、计时器功能以及保存信息到文件功能,由于是在原有的基础上修改的,所以做起来比较简单,没有花费太多的时间。当然在编程过程中也遇到很多小问题,有些问题比较简单但就不知道错在哪里,后来经过自己的不断调试,这个 Hannoi 塔游戏终于大功告成。经过编写这个 Hannoi 塔游戏,我认识到应该注意细节问题,虽然是很小的问题,但可以提高自己编程的能力,而且还可以培养自己编程的严谨性,同时还可以为以后的编程积累经验。编写完这个 Hannoi 塔游戏,我发现自己有很多的不足,我想如果让我来单独来编写这个游戏,我感觉很吃力,因为这个游戏涉及到好多算法。7 7部分原代码(见附录部分原代码(见附录 1 1)题目二题目二 中国象棋(中国象棋(C/SC/S 版)版)1 1设计内容及要求设计内容及要求中国象棋的基本要求中国象棋的基本要求设计 C/S 网络版中国象棋,也就是客户端与服务器端都是 java 应用程序。具体要求如下:(1)中国象棋是双方在有着 9 调竖线和 10 条横线的棋盘上对弈,竖线和横线的交叉称为棋点或对弈点,每个棋子都是在棋点上行走,而不是在方格中行走。(2)河界将棋盘分成两等份,每一边都有一块有 9 个点组成的九宫,棋子“将”,“帅”和“士”只能在九宫内移动,并且“将”和“帅”每一步只可以水平或垂直移动一个棋点;“士”只能在九宫内移动,并且它每一步只可以沿着对角线移动一个棋点;“象”必须一次沿着对角线方向走两个棋点,但它不能过河也不能跳过或穿越障碍,即“象”不能别眼,“马”没一步只可以水平或垂直移动两个棋点,但必须按对角线向左或向右移动。中国象棋的“马”不能跳过障碍,即马不能别腿。“车”可以水平或垂直方向移动人一个无障碍的点。“炮”移动起来和车类似,但它必须跳过一个棋子来吃掉对方的一个棋子,被跳过的那个棋子称为桥或者屏风。“兵”每步只能向前移动一个棋子过河以后,它便增加了向左右移动的能力,并不允许向后移动。(3)用户开始运行程序后,进入用户登录界面,用户输入正确的用户名和密码才可以进入中国象棋主界面。(4)用户进入主界面后,单击“建立主机”按钮,就把该计算机作为主机,等待其他用户登录到这台主机后,才可以进行对弈。(5)当有用户登录到这台主机上士,用户单击“开始”按钮就可以开始想起对弈了,在对弈过程中,用户可以单击“悔棋”按钮,就可以实现悔棋,用户还可以单击“认输”按钮,向对方认输。(6)如果用户赢了,用户的积分就会增加。(7)用户在对弈过程中可以聊天。需实现的主要功能需实现的主要功能(1)用户登录验证功能。(2)每一个用户可以把自己的计算机做为主机。(3)每一个用户可以寻找主机,并且与主机建立连接。(4)用户在对弈过程中,可以悔棋,而且可以认输。(5)没一个用户都用积分,当赢了比赛后,用户的积分就会增加。(6)有聊天室功能,即用户在对弈过程中可以与对方聊天。(7)在线用户显示功能。2 2需求分析需求分析数据库设计数据库设计数据库及表结构的建立数据库及表结构的建立中国象棋系统共创建了一个 dengluzhuce 数据库,在该数据库中创建了一个 login 表。数据库是用 Access 创建的,创建方法是:新建空数据库。login 表是用来存储用户信息的,login 数据表的创建如下表所示:表 2-1 login 数据表字段名称用户名密码积分的建立的建立是否在线数据类型文本文本文本数字说明JDBC-ODBCJDBC-ODBC为了同 dengluzhuce 数据库建立连接,首先要创建一个 ODBC 数据源,打开 Windows 中的控制面板,对于 Windows XP 选择“性能和维护”“管理工具”“数据源(ODBC)”;创建好 user数据源。现在有了数据源,这个数据源就是一个数据库。为了要连接到这个数据库,首先要建立一个JDBC-ODBC 桥接器;(“这里,Class 是包中的一个类,该类通过调用静态方法 forName 加载包中的JdbcOdbcDriver 来建立桥接器。JAVA JAVA 数据库的连接数据库的连接首先使用包中的 Connection 类声明一个对象,然后在使用 DriverManager 调用它的静态方法getConnection 创建这个连接对象,建立连接时应捕捉 SQLException 异常:Try Connection con=(“jdbc:odbc:user”,”,”)Catch(SQLException)这样就建立到数据库 dengluzhuce 的连接。服务器端和客户端的数据传输方式服务器端和客户端的数据传输方式服务器端和客户端的数据时用套接字来传输的。IP 地址表示 Internet 上的计算机,端口号标识正在计算机运行的进程。端口号与IP 地址的组合得出一个网络套接字。客户端使用Socket类建立到服务器的套接字连接,具体实现:try Socket sock=new Socket(String host,int port);catch(IOException e)当套接字连接 sock 建立后,sock 使用 getInputStream()方法获得一个输入流,然后把获得的输入流接到另一个数据流上,然后就可以从这个数据流读取服务器来的信息,同样sock 使用getOutputStream()方法获得一个输出流,然后把获得的输出流接到另一个 DataOutputStram()数据流上,然后向这个数据流写入信息,发送给服务器。客户负责建立客户端到服务器的套接字连接,即客户端负责呼叫,因此服务器必须建立一个等待接收客户的套接字的 ServerSocket 对象,具体实现:try ServerSocket server_socket=new ServerSocket(int port);catch(IOException e)当服务器的 ServerSocket 对象建立后,就可以使用 accept()方法接收客户的套接字。服务器端功能设计服务器端功能设计本课程设计中国象棋(C/S)网络版,服务器端与客户端采用的时套接字连接,服务器端有一个是数据库文件,数据库中有一个表,该表时用来存在用户信息的,服务器端最主要的功能时用户登陆验证,客户端输入用户名和密码,客户端会通过套接字把信息发送给服务器端,服务器端条用数据库中的用户信息对用户的信息进行验证,然后把正确信息发送给客户端。客户端功能设计客户端功能设计客户端最主要的功能时实现象棋棋盘和棋子的绘制,还有一些棋子的走棋规则,本中国象棋棋盘棋子的绘制是采用图片最为背景的,只要应用 Graphics 的对象 g 调用 drawImage()方法绘制棋盘,棋子的走棋规则是应用一些棋点数组记录棋子的位置,在棋子走动的时候判断棋子是否符合棋子的走棋规则。3 3总体设计总体设计总体功能图总体功能图根据对需求所做的分析,中国象棋游戏需要实现的基本功能应包括以下几个方面:(1)用户登录验证功能(2)提供棋盘和棋子;(3)设定棋子的走棋规则;(4)可以悔棋;(5)可以聊天;(6)判断胜负;(7)建立主机和与主机建立连接;(8)显示所有在线用户;游戏可以再任何装有 java 运行环境的电脑中运行,界面简洁,大方,操作简单,方便,容易上手,满足中国象棋游戏爱好者智力娱乐的需求。根据系统功能需求,其总体功能图如图 2-1 所示:用户登录界面中国象棋主界面建立主机刷新主机建立连接退出系统开始悔棋认输和棋在线用户聊天图 2-1 总体功能图总体流程图总体流程图根据对中国象棋游戏的功能分析,设计得到中国象棋游戏的总流程图如图 2-2 所示:开始用户登录界面输入用户名密码否登录成功?是中国象棋主界面Switch建立主机刷新主机建立连接退出系统开始游戏Switch悔棋和棋认输聊天否游戏结束?是退出结束图 2-2 总体流程图4.4.详细设计详细设计功能分析和描述功能分析和描述中国象棋游戏包括三大功能模块:即用户登陆注册模块、中国象棋模块、,用户聊天模块。具体实现的功能又下棋、悔棋、求和,认输、建立主机、建立连接、用户登陆、聊天、游戏音效等。中国象棋功能模块中国象棋功能模块中国象棋模块是中国象棋游戏额核心部分,它实现了游戏的最基本也是最重要的功能。该模块中含有连接、退出系统和开始游戏功能三项功能。功能模块结构图:中国象棋开始游戏连接退出系统图 2-3 中国象棋功能模块结构图开始游戏开始游戏该功能为本游戏的最核心的部分,它实现了中国象棋游戏的最主要的操作,是其他功能的基础。主要功能包括:1.下棋2.提示下棋方3.悔棋4.认输5.求和开始游戏流程图如图 2-4 所示:开始开始游戏否红棋先走是继续游戏是否悔棋否是悔 棋继续游戏是否认输否继续游戏是对战某方输了游戏结束结束图 2-4 开始游戏流程图连接功能连接功能连接功能是开始游戏前必须进行的步骤,连接有建立主机、刷新主机、建立连接。用户正确登陆系统后,进入中国象棋主界面,用户可以点击建立主机,把自己的电脑作为主机,然后等待其他用户连入就可以开始游戏了,用户还可以刷新主机,找到一个主机然后连入就可以开始游戏了。连接功能流程图如图 2-5 所示:开始连接把自己电脑作为主机是建立主机否刷新主机否等待其他用户否其他用户连入是可以开始游戏选择主机是建立连接结束图 2-5 连接功能流程图退出系统退出系统该功能模块是为游戏者提供一种退出本游戏的方法,点击“退出系统”按钮退出用户登陆注册模块用户登陆注册模块用户登陆注册模块提供用户登陆和注册功能,用户运行客户端程序后,首先进入的是用户登陆界面,用户只要输入用户名和密码就可以进入中国象棋界面,如果用户没有用户名,就点击“注册”按钮进行注册,注册完成后就可以输入刚才申请的用户名和密码进入中国象棋界面。用户登陆功能流程图如图 2-6 所示:开始输入用户名密码否登陆成功是中国象棋界面图 2-6 用户登陆功能流程图用户注册功能流程图如图 2-7 所示:开始结束输入相关信息否用户名正确是注册成功结束图 2-7 用户注册功能流程图聊天模块聊天模块聊天模块提供给用户聊天,用户进入中国象棋界面后,开始游戏就可以与对方聊天了,用户发送信息给服务器,然后服务器把信息发送给对方,在对方界面显示。聊天模块流程图如图 2-8 所示:开始输入信息发 送服务器接收服务器向对方发送信息对方显示信息结束图 2-8 聊天模块流程图5.5.算法设计算法设计算法概述算法概述算法是指解决问题的一种方法或过程。它是由若干条指令组成的由穷序列,并且满足下述5条性质:(1)输入:有零个或多个有外部提供的量作为算法的输入;(2)输出:算法产生至少一个量作为输出;(3)可行性:一个算法是能行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的;(4)确定性:组成算法的每条指令是清晰的,无歧义的;(5)有限性:算法中每条指令的执行次数是有限的,执行每条的时间也是有限的在中国象棋游戏中,涉及到多种算法。例如象棋棋盘、棋子的绘制;象棋棋种走棋规则的设置;象棋棋子拖动规则的设置;象棋棋子的悔棋设置等方面都利用到了算法。这些算法的具体设计如下:棋盘、棋子绘制的算法设计棋盘、棋子绘制的算法设计本中国象棋有限的棋盘和棋子采用的都是图片,采用图片比较简单,不用绘制那么多条线,用图片来代替棋盘和棋子,只要用 Graphics 对象 g 调用 drawImage()方法就可以把突变加载进去。棋盘的实现如下图 2-9 所示:chessboard=new Chessboard(newImageIcon(getdir(images/main.jpg).getImage();public voidpaintComponent(Graphics g)g.drawImage(img,0,0,null);图 2-9 棋盘实现的相关代码棋子的实现如下图 2-10 所示:创建棋盘对象绘制棋盘ChessInit chessinit=new ChessInit();创建ChessInit对象public void initTop(int r)public void initUnder(int r)放入棋子对象图 2-10 棋子实现的相关代码棋种走棋规则的算法设计棋种走棋规则的算法设计象棋的每种棋种都有它们自己的走棋规则的,例如,车走直线,中间不能有棋子;马走“日”;象走“田”等等。下面我们就拿象棋棋子车,马,炮,象、士、卒、将的走棋规则算法分别来进行详细的说明:“车”的走棋规则的算法设计“车”的走棋规则的算法设计“车”,它只能走直线,且中间不能有任何棋子,设计时分为两种情况来考虑,一种是纵向行走;一种是横向行走。用if 语句来判断实现,例如车纵向行走,首先,用if(startI=endI)来判断棋子是否纵向行走,接着再用判断语句 if(pointstartIj.isPiece()来判断中间有没别的棋子。横向行走同理。如果棋子车符合以上的走棋规则,则可以走动,否则棋子强制放回原处。现在假设车的棋点坐标为(i,j),i 为横坐标,j 为纵坐标,再设 x,y 为棋盘内任意值。算法设计流程图如图 2-11 所示:开始开始棋子棋子=”车”车”,设其棋点为设其棋点为(i,j)(i,j)是是是否是纵向是否是纵向(i,j(i,jy)y)或横向或横向(i(ix,j)x,j)行走行走否否SwitchSwitch棋子纵向行走棋子纵向行走坐标表示坐标表示(i,j(i,jy)y)棋子横向行走棋子横向行走坐标表示坐标表示(i(ix,j)x,j)棋子斜向行走棋子斜向行走坐标表示坐标表示(i(ix,jx,jy)y)起点起点(i,j)(i,j)到落点到落点(i,j(i,jy)y)之间是否有棋子之间是否有棋子是是否否棋子不能移动棋子不能移动棋子可以移动棋子可以移动起点起点(i,j)(i,j)到落点到落点(i(ix,j)x,j)之间是否有棋子之间是否有棋子是是否否棋子不能移动棋子不能移动棋子不能移动棋子不能移动结束结束图 2-11“车”的走棋规则算法设计流程图“马”的走棋规则的算法设计“马”的走棋规则的算法设计“马”,它只能走“日”字格,而且马腿不能被其它的棋子压到。设计时可两种情况来考虑,一种是横向走两个棋点,纵向走一个棋点;一种是纵向走两个棋点,横向走一个棋点。用 if 语句来判断,例如马横向走“日”,首先,用 if(xAxle=2&yAxle=1)来判断棋子是否横向走两个棋点,纵向走一个棋点,接着再用判断语句 if(pointstartI+1startJ.isPiece()来判断马腿是否被其它棋子压着。纵向走“日”同理。如果棋子马符合以上的走棋规则,则可以走动,否则棋子强制放回原处。现在假设马的棋点坐标为(a,b),a 为横坐标,b 为纵坐标,再设 x,y为棋盘内任意值。算法设计流程图如图 2-12 所示:开始开始棋子棋子 =“马”“马”,设其棋点为设其棋点为(i,j)(i,j)是是是否“日”字格行走是否“日”字格行走switchswitch横向走一个棋点横向走一个棋点,纵向走两个棋点纵向走两个棋点.坐标表示坐标表示(i(i1,j1,j2)2)横向走两个棋点横向走两个棋点,纵向走一个棋点纵向走一个棋点.坐标表示坐标表示(i(i2,j2,j1)1)否否是是棋点棋点(i,j(i,j1)1)上是否有棋子上是否有棋子棋点棋点(i(i1,j)1,j)上是否有棋子上是否有棋子是是否否马腿被压马腿被压否否马腿被压马腿被压棋子不能移动棋子不能移动棋子可以移动棋子可以移动棋子不能移动棋子不能移动棋子不能移动棋子不能移动结束结束图 2-12“马”的走棋规则算法设计流程图“卒”的走棋规则的算法设计“卒”的走棋规则的算法设计“卒”,它的行走规则分两种情况。一种是棋子没过河界,另一种是棋子过了河界。用if 语句来判断,首先,用if(endJ=6)语句来设定棋子过了河界,紧接着设定棋子在过了河界的情况下只能向前、向左、向右行走一个棋点。如果棋子卒符合以上的走棋规则,则可以走动,否则棋子强制放回原处。现在假设卒的棋点坐标为(i,j),i 为横坐标,j 为纵坐标,再设x,y 为棋盘内任意值。算法设计流程图如图 2-13 所示:开始开始棋子棋子 =“卒”“卒”,设其棋点为设其棋点为(i,(i,j)j)否否是否过了河界是否过了河界(i,i,j=6)j=6)是是向前行走一棋向前行走一棋点点(i(i,j+1),j+1)否棋子不能移动棋子不能移动是是棋子可以移动棋子可以移动向前向前(i(i,j+1),j+1),向左、右,向左、右(i(i1,j)1,j)行行走一棋点走一棋点否否棋子不能移动棋子不能移动棋子可以移动棋子可以移动结束结束图 2-13“卒”的走棋规则算法设计流程图“将”的走棋规则的算法设计“将”的走棋规则的算法设计“将”,它只能在“九宫”中行走,而且每次只能横着或者纵着行走一棋点。直接用 if 语句来判断,首先,用 if(endI=4)来判断棋子是否是在“九宫”里行走,接着判断棋子是否是横向或纵向只走一个棋点。如果棋子将符合以上的走棋规则,则可以走动,否则棋子强制放回原处。现在假设将的棋点坐标为(i,j),i 为横坐标,j 为纵坐标,再设 x,y 为棋盘内任意值。算法设计流程图如图 2-14 所示:开始开始棋子棋子 =“将将”,设其棋点为设其棋点为(i(i,j)j)是否在是否在“九宫九宫”中行走中行走(4=i=(4=i=6,6,j=3)j=3)是是纵向纵向(i(i,jj 1)1)、横横向行走一格向行走一格(i(i 1,j)1,j)是是棋子不能移动棋子不能移动棋子可以移动棋子可以移动棋子不能移动棋子不能移动否否否否结束结束图 2-14“将”的走棋规则算法设计流程图“炮”的走棋规则的算法设计“炮”的走棋规则的算法设计“炮”,它只能走直线,且中间有且只能有一个棋子。算法设计流程图如图 2-15 所示:开始开始棋子棋子 =“炮”“炮”,设其棋点为设其棋点为(i,j)(i,j)是是是否是纵向是否是纵向(i,j(i,j y)y)或横向或横向(i(i x,j)x,j)行走行走否否switchswitch棋子纵向行走棋子纵向行走坐标表示坐标表示(i,j(i,j y)y)起点起点(i,j)(i,j)到落点到落点(i,j(i,j y)y)之间的棋子数之间的棋子数目目=1=1是是棋子横向行走棋子横向行走坐标表示坐标表示(i(i x,j)x,j)起点起点(i,j)(i,j)到落点到落点(i(i x,y)x,y)之间的棋子数之间的棋子数目目=1=1是是棋子斜向行走棋子斜向行走坐标表示坐标表示(i(i x,jx,j y)y)否否否否棋子不能移动棋子不能移动棋子可以移动棋子可以移动棋子不能移动棋子不能移动棋子不能移动棋子不能移动结束结束图 2-15“炮”的走棋规则算法设计流程图“象”的走棋规则的算法设计“象”的走棋规则的算法设计“象”,它只能走“田”字格,而且不能过河,象腿不能被其它的棋子压到。这样只有一种情况考虑,那就是纵向走两个棋点,横向也走两个棋点。用 if 语句来判断,首先,用if(xAxle=2&yAxle=2&endJ=5)来判断棋子是否走田字格,而且不能过河,接着再用判断语句 if(pointcenterIcenterJ.isPiece()来判断象腿是否被其它棋子压着。如果棋子象走动符合以上的走棋规则,则可以走动,否则棋子强制放回原处。现在假设象的棋点坐标为(i,j),i 为横坐标,j 为纵坐标,再设 x,y 为棋盘内任意值。算法设计流程图如图 2-16 所示:开始开始棋子棋子 =“象”“象”,设其棋点为设其棋点为(i,j)(i,j)是是横向走两个棋点横向走两个棋点,纵向走两个棋点纵向走两个棋点.坐标表示坐标表示(i(i2,j2,j2)2)是否“田”字格行走是否“田”字格行走否否是是棋点棋点(i(i1,j1,j1)1)上有棋子上有棋子象腿被压象腿被压否否棋子不能移动棋子不能移动棋子可以移动棋子可以移动棋子不能移动棋子不能移动结束结束图 2-16“象”的走棋规则算法设计流程图“士”的走棋规则的算法设计“士”的走棋规则的算法设计“士”,它只能在“九宫”中行走,而且每次只能斜着行走一格。这样只有一种情况来考虑,即 纵 向 走 一 个 棋 点,横 向 走 一 个 棋 点。if语 句 来 判 断,if(endI=4&endJ=3&xAxle=1&yAxle=1)。如果棋子士符合以上的走棋规则,则可以走动,否则棋子强制放回原处。现在假设士的棋点坐标为(i,j),i 为横坐标,j 为纵坐标,再设x,y 为棋盘内任意值。算法设计流程图如图 2-17 所示:开始开始棋子棋子 =“士”“士”,设其棋点为设其棋点为(i,j)(i,j)是否是否在“九宫”中行走在“九宫”中行走(4=i=6,j=3)(4=i=6,j=3)是是否否斜向行走一格斜向行走一格(i(i 1,1,jj 1)1)是是棋子不能移动棋子不能移动棋子可以移动棋子可以移动棋子不能移动棋子不能移动否否结束结束图 2-17“士”的走棋规则算法设计流程图棋子拖动规则的算法设计棋子拖动规则的算法设计在拖动象棋

    注意事项

    本文(java课程设计报告.pdf)为本站会员(l****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开