- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
骑士游历java课程设计.doc
数据结构课程设计报告
目 录
1 设计目的与意义 3
2 系统描述 3
3 运行环境 4
4 系统的分析与设计 4
4.1 程序结构说明 4
4.2 AccessibleSquare算法实现 4
4.3 画图类算法实现 6
4.4 主调用程序的设计和开发 7
5 系统测试 8
5.1 游戏初始界面 8
5.2 游戏以(1,1)为起点运行界面 9
5.3 游戏以(6,3)为起点界面 10
5.4 游戏以(6,3)为起点运行界面 10
6 总结 11
源程序 12
1 设计目的与意义
Java课程设计是计算机科学与技术专业学生必做的集中实践性环节之一,是学习完《Java程序设计》课程后进行的一次全面的综合练习。其目的在于通过课程设计,使学生能够得到较系统的技能训练,从而巩固和加深对Java 编程的基础理论知识的理解,培养学生综合运用所学理论解决实际问题的能力,使学生成为具有扎实的计算机理论基础和较强的独立动手能力的复合型、应用型人才。
2 系统描述
骑士游历问题是一个古老而著名的问题,它最初是由大数学家Euler提出的。问题是这样的:国际象棋中的棋子(叫作骑士)在一个空棋盘内移动,问它能否经过64格中的每一格且只经过一次?(骑士按L行移动,即在某方向前进两格接着在与原方向垂直的方向上前进一格)
该课程设计要求实现骑士游历问题的求解,并能够演示起始位置在棋盘上任何位置的游历问题的实现。程序将采用动态的图形演示,使算法的描述更形象、更生动。本程序采用Applet来编制整个程序,这样既可以加深对算法的实现的了解,也可以进一步熟悉Java图形界面、Applet以及Java语言的命名规范。
骑士游历的课程设计是按照面向对象的思想进行开发,其中主要的类包括AccessibleSquare 类、MyPanel类和KnightsTour类。其中AccessibleSquare 类主要是算法实现,采用启发式算法;KnightsTour类是主类,或者说是控制类,它完成对算法类和图画类的调用;MyPanel类是画图类用来实现图形化显示结果。
3 运行环境
本程序是在windows xp的环境下运行的。
4 系统的分析与设计
4.1 程序结构说明
本程序由三个类组成一个工程文件。其中KnightsTour是主类,或者说是控制类, AccessibleSquare类主要是算法实现,MyPanel实现图形化显示结果。
程序的运行关系如图4-1。
图4-1 程序运行关系图
4.2 AccessibleSquare算法实现
AccessibleSquare类主要是算法实现,采用启发式算法。
先把八个可能走的方向用两个数组(horizontal[ ]和vertical[ ])表示,选择走哪个方向就在原坐标上进行相应的加法,表示骑士到了一个新的位置。horizontal[ ]和vertical[ ]表示骑士8个方向走L形状所需的X坐标和Y坐标的变化量: horizontal[] = {2,1,-1,-2,-2,-1,1,2},vertical [] = {-1,-2,-2,-1,1,2,2,1}。 坐标图如下:
图4-2 骑士游历走向坐标图
由于程序采用启发式算法,应考察每一方格的可到达性。使用数组accessibility []表示可达到数,并当骑士游历时,程序动态修正剩余格子的可达到数。accessibility [ arrayPos ] = 0 表明格子已经被占据。
使用冒泡法来查询最小数。冒泡排序的基本概念是:依次比较相邻的两个数,将大数放在前面,小数放在后面。即首先比较第1个和第2个数,将大数放前,小数放后。然后比较第2个数和第3个数,将大数放前,小数放后,如此继续,直至比较最后两个数,将大数放前,小数放后,此时第一趟结束,在最后的数必是所有数中的最小数。重复以上过程,直至最终完成排序。private void sortAll (){
for ( int begin = 0 ; begin countAccessibility - 1 ; begin ++ ){
for ( int i = begin + 1; i countAccessibility ; i ++ ){
if ( accessibility [ begin ] accessibility [ i ] ){
swapAll( begin, i ); }//end of if
}// end of inner for
您可能关注的文档
- 某化肥厂电站电气安装施工方案.doc
- 某化工公司地方分公司电气安全工作规程.doc
- 某公司安全生产检查表.doc
- 某化工机械制造公司压力容器设计质量手册.doc
- 某环境电器开业策划书.doc
- 某黄河大桥施工组织设计箱梁先简支后连续.doc
- 某化妆品公司薪酬管理制度(详细).doc
- 某基层医院住院患者死因统计分析.doc
- 某集团公司财务管理制度金正大.doc
- 某监理公司编制监理规划模板.doc
- 2025中国冶金地质总局所属在京单位高校毕业生招聘23人笔试参考题库附带答案详解.doc
- 2025年01月中国人民大学文学院公开招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2024黑龙江省农业投资集团有限公司权属企业市场化选聘10人笔试参考题库附带答案详解.pdf
- 2025汇明光电秋招提前批开启笔试参考题库附带答案详解.pdf
- 2024中国能建葛洲坝集团审计部公开招聘1人笔试参考题库附带答案详解.pdf
- 2024吉林省水工局集团竞聘上岗7人笔试参考题库附带答案详解.pdf
- 2024首发(河北)物流有限公司公开招聘工作人员笔试参考题库附带答案详解.pdf
- 2023国家电投海南公司所属单位社会招聘笔试参考题库附带答案详解.pdf
- 2024湖南怀化会同县供水有限责任公司招聘9人笔试参考题库附带答案详解.pdf
- 2025上海烟草机械有限责任公司招聘22人笔试参考题库附带答案详解.pdf
文档评论(0)