骑士游历程序的开发

上传人:枫** 文档编号:456659170 上传时间:2022-12-26 格式:DOC 页数:19 大小:410.50KB
返回 下载 相关 举报
骑士游历程序的开发_第1页
第1页 / 共19页
骑士游历程序的开发_第2页
第2页 / 共19页
骑士游历程序的开发_第3页
第3页 / 共19页
骑士游历程序的开发_第4页
第4页 / 共19页
骑士游历程序的开发_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《骑士游历程序的开发》由会员分享,可在线阅读,更多相关《骑士游历程序的开发(19页珍藏版)》请在金锄头文库上搜索。

1、 Java 课程设计报告课 题: 骑士游历程序的开发 姓 名: 学 号: 同组姓名: 专业班级: 信管08101 指导教师: 设计时间: 2010年1月 评阅意见:评定成绩: 指导老师签名: 年 月 日目 录1 设计目的与意义32 系统描述33 运行环境34 系统的分析与设计34.1 程序结构说明34.2 AccessibleSquare算法实现44.3 画图类算法实现54.4 主调用程序的设计和开发75 系统测试75.1 游戏初始界面85.2 游戏以(1,1)为起点运行界面85.3 游戏以(6,3)为起点界面95.4 游戏以(6,3)为起点运行界面106 总结107 参考文献12源程序121

2、 设计目的与意义 Java课程设计是计算机科学与技术专业学生必做的集中实践性环节之一,是学习完Java程序设计课程后进行的一次全面的综合练习。其目的在于通过课程设计,使学生能够得到较系统的技能训练,从而巩固和加深对Java 编程的基础理论知识的理解,培养学生综合运用所学理论解决实际问题的能力,使学生成为具有扎实的计算机理论基础和较强的独立动手能力的复合型、应用型人才。2 系统描述骑士游历问题是一个古老而著名的问题,它最初是由大数学家Euler提出的。问题是这样的:国际象棋中的棋子(叫作骑士)在一个空棋盘内移动,问它能否经过64格中的每一格且只经过一次?(骑士按L行移动,即在某方向前进两格接着在

3、与原方向垂直的方向上前进一格)该课程设计要求实现骑士游历问题的求解,并能够演示起始位置在棋盘上任何位置的游历问题的实现。程序将采用动态的图形演示,使算法的描述更形象、更生动。本程序采用Applet来编制整个程序,这样既可以加深对算法的实现的了解,也可以进一步熟悉Java图形界面、Applet以及Java语言的命名规范。骑士游历的课程设计是按照面向对象的思想进行开发,其中主要的类包括AccessibleSquare 类、MyPanel类和KnightsTour类。其中AccessibleSquare 类主要是算法实现,采用启发式算法;KnightsTour类是主类,或者说是控制类,它完成对算法类

4、和图画类的调用;MyPanel类是画图类用来实现图形化显示结果。3 运行环境本程序是在windows xp,JBuild 9的环境下运行的。4 系统的分析与设计4.1 程序结构说明本程序由三个类组成一个工程文件。其中KnightsTour是主类,或者说是控制类, AccessibleSquare类主要是算法实现,MyPanel实现图形化显示结果。程序的运行关系如图4-1。AccessibleSquare类MyPanel类KnightsTour类图4-1 程序运行关系图4.2 AccessibleSquare算法实现1) AccessibleSquare类主要是算法实现,采用启发式算法。先把八个

5、可能走的方向用两个数组(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。 坐标图如下:65432187图4-2 骑士游历走向坐标图2) 由于程序采用启发式算法,应考察每一方格的可到达性。使用数组accessibility 表示可达到数,并当骑士游历时,程序动态修正剩余格子的可达到数。accessibil

6、ity arrayPos = 0 表明格子已经被占据。3) 使用冒泡法来查询最小数。冒泡排序的基本概念是:依次比较相邻的两个数,将大数放在前面,小数放在后面。即首先比较第1个和第2个数,将大数放前,小数放后。然后比较第2个数和第3个数,将大数放前,小数放后,如此继续,直至比较最后两个数,将大数放前,小数放后,此时第一趟结束,在最后的数必是所有数中的最小数。重复以上过程,直至最终完成排序。/冒泡排序法private void sortAll () for ( int begin = 0 ; begin countAccessibility - 1 ; begin + ) for ( int i

7、= begin + 1; i 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 yposi - ; /直到没有路径了 KnightsTour.access ownxpos ownypos = 0 ; /交换两个数 private v

8、oid 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 画图类算法实现由于目前用户对界面的要求逐步提高,因此,现在的可视化编程已经取代了传统的用户界面的设计方法。而在可视化编程中,人机之间的直接联系主

9、要是通过一些窗口和对话框来实现。JBuilder9也不例外,它也是通过这些窗口和对话框来实现窗体。用户需要的控件则可以直接放置在窗体上,利用这些控件来实现复杂的功能。 用户界面设计器是用户在编写程序过程中最常用到的工具。用户在进行界面设计时,只需单击文件视图标签中的Design页,就会出现该用户界面设计器。用户可以利用JBuilder提供的各种控件来搭建自己的程序界面。而且同时,JBuilder9还为这些界面自动生成了相应的代码,为用户提供了程序的环境。接下来,就要由用户设置属性,来编写一些实现用户特定功能的代码。这在很大程度上减少了用户界面设计的复杂度,使用户的主要精力投入到如何实现和加强功

10、能上来。本程序是Applet的图形界面以及如何利用图形用户界面的控件接受用户信息,并用图形或图像显示结果。1) MyPanel函数实现图形化显示结果, MyPanel类就是画图类。首先用两种不同颜色的方块(WHITE和BIACK)显示出棋盘,还有其他两种方块(WKNIGHT和BKNIGHT),这两种方块上都有骑士,但颜色不一样。在骑士游历过程中不断用后来两种有骑士的方块代替前两种方块,其中需要注意的是保持棋盘的颜色一致性。如5-3图所示,将其设置为静态变量,方便使用,防止修改时出错。 图4-3 骑士游历游戏中的棋盘用图2) 显示骑士起始位置,刚走过的步的位置和现在的位置,用边框的不同来加以区别

11、,采用函数g.setColor(Color.green)(刚走过的步显示为绿色)和g.setColor(Color.biue)(当步显示为蓝色)实现。这个类的对象在主类KnightsTour中被实例化。采用public viod paintComponent(Graphics g)函数画出图形。/MyPanel函数实现图形化显示结果class MyPanel extends JPanel public static final int WHITE = 0 ;/用于显示棋盘 public static final int BLACK = 1 ; public static final int W

12、KNIGHT = 2 ;/用于显示骑士 public static final int BKNIGHT = 3 ; private int chessboard; private int xrecord ; private int yrecord ; private int displayCount ; private int lastxpos ,lastypos ,nextxpos ,nextypos ; ImageIcon images ; private boolean start ; public MyPanel() /MyPanel构造函数 initvariance(); public MyPanel( int newxrecord ,int newyrecord ) /重载构造函数 initvariance(); initboard( newxrecord , newyrecord ); 4.4 主调用程序的设计和开发 KnightsTour类

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号