好都重新计算一遍。其缺点很明显就是每次消去图形动作之后重新计算所有可能的最短路径所需要消耗的时间;而该方法的优点则是可以很快地判断两个相同图形之间是否存在满足条件的最短路径。
如果用户很厉害,每次都能选中可以消除的图形对,那么用这种方法浪费的时间就会相当可观,毕竟用户未选中的其他可以连接的图形对之间的最短路径都被浪费掉了;而如果用户很差劲,每轮选择的次数都远远大于当前可能的连接数量时,该方法就会比书中正文提到的方法高效。但这种情况是比较少的,因为在整个游戏中用户主要是会用眼睛“找”而不是频繁的用鼠标去“试”。所以总的来看,维护所有最短路径的方法的效率相对比较低。游戏结束后,在页面出现对话框,询问玩家是否进行下一局。
3.2测试计划及分析
3.2.1检验的先后顺序
在检验两个方块能否消掉的时候,我们要让两个方块同时满足两个条件才行,就是两者配对并且连线成功。所以,这里应该先检验配对,如果该条件不成立的话,就不要再进行连线检查了,这样可以避免很多不必要的复杂运算。当然,如果你在做这个游戏的时候,配对规则不够如此简单的话,那么就看哪个算起来麻烦就把它放在后面。 3.2.2程序异常处理
本程序没有涉及到程序的异常处理,只有关于“死锁”问题,本质上还是判别两个格子是否可以消去的问题。最直接的方法就是,对于游戏中尚未消去的格子,两两都计算一下,它们是否可以消去。此外,从上面的广度优先搜索可以看出,我们每次都是扩展出起始格子A(x1,y1)能够到达的格子。也就是说,对于每一个格子,我们可以调用一次上面的扩展过程,得到所有可以到达的格子,如果这些格子中有任意一个跟起始格子的图形一致,则它们可以消去,目前游戏还不是“死锁”状态。
第
4章 课程设计总结
通过这次课程设计还使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,并且还发现了自己的许多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。但通过这次课程设计之后,一定把以前所学过的知识重新温故。
我完成了这次JAVA课程设计,不过这只是我学习路上的驿站。我相信我在未来的学习中会记住从本次课程设计中所学到的东西,并将它用到未来的学习中去。在这里谢谢老师的指导,我会更加努力的学习
信息与计算科学0601王丹平060701024
附件A
********************************************************** * 类名: MainFrame
* 作用: 自定义主类,对鼠标拖拽的初始界面进行声明* * 继承的父类: JFrame类 * * 实现的接口: Strings*
********************************************************** import java.awt.*; import javax.swing.*; import cn.elva.Settings; import cn.elva.model.Map;
public class MainFrame extends JFrame{
private static final long serialVersionUID = 1L; //炸弹的次数
private int bombCount = Settings.BOMBCOUNT; private JPanel jContentPane = null; private JMenuBar menuBar = null; private JMenu fileMenu = null; private JMenuItem reloadItem = null; private JMenuItem startItem = null;
//炸弹
private JMenuItem bombItem = null; private JMenuItem exitItem = null; private MapUI mapUI = null; // 游戏开始时间 private long startTime;
1
信息与计算科学0601王丹平060701024
// 结束时间
private long endTime; private Timer timer = null; // private JMenuItem ti
private JMenuBar initMenuBar(){ if (menuBar == null){
menuBar = new JMenuBar(); fileMenu = new JMenu(\菜单\
startItem = new JMenuItem(\开始游戏\
startItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){ }
reload();
});
reloadItem = new JMenuItem(\重新开始\
reloadItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){ }
reload();
});
bombItem = new JMenuItem(\炸弹\
bombItem.addActionListener(new ActionListener(){
public void actionPerformed( ActionEvent e ){
if( bombCount==0 ){
JOptionPane.showMessageDialog(MainFrame.this,\三枚
炸弹已用完!!!\
2
信息与计算科学0601王丹平060701024
}
}
}
bombItem.setEnabled(false); return;
mapUI.bomb(); bombCount--;
});
exitItem = new JMenuItem(\退出\
exitItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){ }
System.exit(0);
});
fileMenu.add(startItem); fileMenu.add(reloadItem); fileMenu.add( bombItem ); fileMenu.add(exitItem); menuBar.add(fileMenu);
return menuBar; }
public static void main(String[] args){ // 自动生成方法存根
SwingUtilities.invokeLater(new Runnable(){
public void run(){
MainFrame thisClass = new MainFrame();
3
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Java连连看课程设计(3)在线全文阅读。
相关推荐: