没有合适的资源?快使用搜索试试~ 我知道了~
骑士游历程序的开发(JAVA语言)
4星 · 超过85%的资源 需积分: 15 24 下载量 65 浏览量
2010-05-06
14:27:45
上传
评论 1
收藏 386KB DOC 举报
温馨提示
试读
18页
用JAVA写的一个骑士游历程序的开发,包括课程设计要求的文字描述及源代码
资源推荐
资源详情
资源评论
目 录
1 设计目的与意义.......................................................2
2 系统描述...............................................................2
3 运行环境...............................................................2
4 系统的分析与设计....................................................2
4.1 程序结构说明.......................................................................................................................2
4.2 AccessibleSquare 算法实现..................................................................................................3
4.3 画图类算法实现...................................................................................................................4
4.4 主调用程序的设计和开发...................................................................................................6
5 系统测试...............................................................7
5.1 游戏初始界面.......................................................................................................................7
5.2 游戏以(1,1)为起点运行界面.......................................................................................7
5.3 游戏以(6,3)为起点界面...............................................................................................8
5.4 游戏以(6,3)为起点运行界面.......................................................................................9
6 总结....................................................................9
7 参考文献.............................................................11
源程序..................................................................11
1 设计目的与意义
Java 课程设计是计算机科学与技术专业学生必做的集中实践性环节之一,是
学习完《Java 程序设计》课程后进行的一次全面的综合练习。其目的在于通过
课程设计,使学生能够得到较系统的技能训练,从而巩固和加深对 Java 编程的
基础理论知识的理解,培养学生综合运用所学理论解决实际问题的能力,使学
生成为具有扎实的计算机理论基础和较强的独立动手能力的复合型、应用型人
才。
2 系统描述
骑士游历问题是一个古老而著名的问题,它最初是由大数学家 Euler 提出
的。问题是这样的:国际象棋中的棋子(叫作骑士)在一个空棋盘内移动,问它
能否经过 64 格中的每一格且只经过一次?(骑士按 L 行移动,即在某方向前进两
格接着在与原方向垂直的方向上前进一格)
该课程设计要求实现骑士游历问题的求解,并能够演示起始位置在棋盘上
任何位置的游历问题的实现。程序将采用动态的图形演示,使算法的描述更形
象、更生动。本程序采用 Applet 来编制整个程序,这样既可以加深对算法的实
现的了解,也可以进一步熟悉 Java 图形界面、Applet 以及 Java 语言的命名规范。
骑士游历的课程设计是按照面向对象的思想进行开发,其中主要的类包括
AccessibleSquare 类、MyPanel 类和 KnightsTour 类。其中 AccessibleSquare 类主
要是算法实现,采用启发式算法;KnightsTour 类是主类,或者说是控制类,它
完成对算法类和图画类的调用;MyPanel 类是画图类用来实现图形化显示结果。
3 运行环境
本程序是在 windows xp,JBuild 9 的环境下运行的。
4 系统的分析与设计
4.1 程序结构说明
本程序由三个类组成一个工程文件。其中 KnightsTour 是主类,或者说是控
制类, AccessibleSquare 类主要是算法实现,MyPanel 实现图形化显示结果。
2
程序的运行关系如图 4-1。
图 4-1 程序运行关系图
4.2 AccessibleSquare 算法实现
1) 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 骑士游历走向坐标图
2) 由 于 程 序采用启 发 式 算 法 , 应 考 察 每 一 方 格 的 可 到 达 性 。 使用 数 组
accessibility []表示可达到数,并当骑士游历时,程序动态修正剩余格子的可
达到数。accessibility [ arrayPos ] = 0 表明格子已经被占据。
3) 使用冒泡法来查询最小数。冒泡排序的基本概念是:依次比较相邻的两个
数,将大数放在前面,小数放在后面。即首先比较第 1 个和第 2 个数,将
AccessibleSquare
类
MyPanel 类
KnightsTour 类
6
5
4
3
2
1
8
7
3
大数放前,小数放后。然后比较第 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
}// end of outer for
}// end of sortAll
//进行移动操作
public void domoving(){
for ( int i = 0 ; i < countAccessibility ; i ++ ){
KnightsTour.access[ xpos [i] ][ ypos[i] ] -- ; }
//直到没有路径了
KnightsTour.access[ ownxpos ][ ownypos ] = 0 ;
}
//交换两个数
private void swapAll ( int i , int j ){
int temp ;
temp = xpos [ i ]; xpos [ i ] = xpos [ j ]; xpos [ j ] = temp;
temp = ypos [ i ]; ypos [ i ] = ypos [ j ]; ypos [ j ] = temp;
temp = accessibility [ i ];
accessibility [ i ] = accessibility [ j ]; accessibility [ j ] = temp;
}
4.3 画图类算法实现
由于目前用户对界面的要求逐步提高,因此,现在的可视化编程已经
取代了传统的用户界面的设计方法。而在可视化编程中,人机之间的直接
联系主要是通过一些窗口和对话框来实现。JBuilder9 也不例外,它也是通
过这些窗口和对话框来实现窗体。用户需要的控件则可以直接放置在窗体
上,利用这些控件来实现复杂的功能。
用户界面设计器是用户在编写程序过程中最常用到的工具。用户在进行界
面设计时,只需单击文件视图标签中的 Design 页,就会出现该用户界面设计
器。用户可以利用 JBuilder 提供的各种控件来搭建自己的程序界面。而且同
4
剩余17页未读,继续阅读
资源评论
- tfh198920052011-10-27支持下,只是解析过程太简略
qiflyli
- 粉丝: 1
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功