您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 连连看java程序设计
《高级语言程序设计(2)》课程设计任务书题目图片连连看游戏程序学生姓名学号专业班级设计内容与要求【问题描述】图片连连看游戏是利用java图形用户界面设计而设计的图片连连看游戏界面。它的游戏规则就是选择一对内容相同的图案进行连线,但此连线不能穿跨其他图案。连线的转折点不能多于两个,如果符合规定则消除此对图案。如果游戏找不到可连接消除的图案,可以通过鼠标点击重列按钮让它重新排列图案,也可以通过鼠标重新开始新的游戏,时间结束后游戏自动结束,还可以通过鼠标退出游戏。【软件功能】1利用awt实现良好的游戏界面,游戏界面尽可能美观。2游戏开始时,能产生随机数字和随机位置以及限制的时间。3在按动鼠标和键盘时,游戏能玩起来,即能响应鼠标事件。4能消去满足条件的含有相同数字的图片。5能重列图片顺序。6能选择退出游戏和重新再来一局。【基本要求】1用二维数组存放游戏按钮的位置坐标。2用二维数组存放随机位置。3调用按钮方法将图片添加到游戏按钮上。4要求用户界面采用图形用户界面,响应鼠标事件。5利用awt实现良好的GUI界。6用GridLayout类以矩形网格形式和BorderLayout类以界面布局形式对容器中的组件进行布局。7源程序中要有充分的注释,报告中要有详细的流程图和文字材料。8运行的结果以及图形用户界面要进行屏幕拷贝,插入报告中。【提交成果】1“《高级语言程序设计(2)》课程设计任务书”和“《高级语言程序设计(2)》课程设计报告”打印件各一份;2先将上面两项内容的word文档,通过电子邮件交到指导教师,待许可后,打印装袋。起止时间2012年12月24日至2012年12月30日指导教师签名2012年12月22日系(教研室)主任签名2012年12月22日学生签名2012年12月25日《高级语言程序设计(2)》课程设计报告专业:班级:学号:姓名:完成日期:指导教师一、程序设计说明书【设计题目】图片连连看游戏程序【问题描述】图片连连看游戏是利用java图形用户界面设计而设计的图片连连看游戏界面。它的游戏规则就是选择一对内容相同的图案进行连线,但此连线不能穿跨其他图案。连线的转折点不能多于两个,如果符合规定则消除此对图案。如果游戏找不到可连接消除的图案,可以通过鼠标点击重列按钮让它重新排列图案,也可以通过鼠标重新开始新的游戏,时间结束后游戏自动结束,还可以通过鼠标退出游戏。【软件功能】1利用awt实现良好的游戏界面,游戏界面尽可能美观。2游戏开始时,能产生随机数字和随机位置以及限制的时间。3在按动鼠标和键盘时,游戏能玩起来,即能响应鼠标事件。4能消去满足条件的含有相同数字的图片。5能重列图片顺序。6能选择退出游戏和重新再来一局。【算法思想】在检验两个图片能否消掉的时候,要让两个图片同时满足两个条件才行,就是两者配对并且连线成功。分3种情况:这三种情况都需要三个检测,这三个检测分别检测一条直路经。这样就会有三条路经。若这三条路经上都是空按钮,那么就刚好是三种直线(两个转弯点)把两个按钮连接起来了。(1)、相邻(2)、若不相邻的先在第一个按钮的同行找一个空按钮。1.找到后看第二个按钮横向到这个空按钮所在的列是否有按钮。2.没有的话再看第一个按钮到与它同行的那个空按钮之间是否有按钮。3.没有的话,再从与第一个按钮同行的那个空按钮竖向到与第二个按钮的同行看是否有按钮。没有的话路经就通了可以消了.(3)、若(2)失败后,再在第一个按钮的同列找一个空按钮。1.找到后看第二个按钮竖向到这个空按钮所在的行是否有按钮2.没有的话,再看第一个按钮到与它同列的那个空按钮之间是否有按钮。3.没有的话,再从与第一个按钮同列的那个空按钮横向到与第二个按钮同列看是否有按钮。没有的话路经就通了,可以消了。若以上三步都失败,说明这两个按钮不可以消去两图能相连的所有情况:(1)(2)(3)(4)(5)(6)【类的设计】图片连连看游戏程序中只有一个类,类名为LianLianKan,该类实现了接口ActionListener;该类总共有十三个方法,他们的功能分别是:init()初始化;createImgBtn()传进两个String类型的参数,返回带有数字和图片的按钮;randomBuild(),产生十五对随机的数字;fraction()计算得分;reload()将游戏按钮重列;estimateEven()传进两个int型和一个JButton型的三个参数(分别是击中的按钮位置坐标和按钮),选中按钮信息的存储与操作;xiao()消去符合游戏规则的相同的两个按钮;linePassOne()在第一按钮同行有空按钮的条件下判断第二转折点出现的情况;rowPassOne()在第一按钮同列有空按钮的条件下判断第二转折点出现的情况;remove()将相同的两个按钮消去;actionPerformed()实现按钮事件的监听;timerDemo()时间提示;main()主方法;【用户界面】【程序技巧】1.程序采用图形用户界面,简单大方,且易于操作;2.连连看图片采用大家熟悉的图片,能激起玩家的游戏兴趣;3.游戏功能较为齐全,可实现退出、重列和下一局的功能,重列功能可对游戏中剩余的图片进行重新排列,使游戏继续进行,下一局功能可以使游戏重新开始4.游戏具有倒计时功能,能够控制游戏时限,使游戏具有一定难度,倒计时结束时显示“gameover”5.游戏可以统计玩家的游戏得分【模块划分及调用关系】根据对连连看游戏的分析,该游戏可分化为三个模块:算法模块、界面显示模块、菜单控制模块。调用关系:新建LianLianKan对象【模块流程图】主模块流程图:用户界面模块流程图:连连看游戏算法模块菜单模块用户界面模块main方法randomBuild()timerDemo()fractionLabel()createImgBtn()init()actionPerformed()estimateEven()reload()randomBuild()init()timerDemo()xiao()remove()linePassOne()rowPassOne()算法模块流程图:thisContainer主界面SouthPanelBorderLayout布局CenterPanelGriLayout布局(7x8)NorthPanelBorderLayout布局WestPanelBorderLayout布局EastPanelBorderLayout布局Label:剩余时间Label:TimeLabel:您的得分Label:Fraction(分数)Button退出Button重列Button下一局否是是否是否否是是是否是否否是否【运行说明】是否为同一图片是否在同一位置是否在一条横线是否在一条竖线不能消去是否相邻消去是否直线相连消去当两图不在一条直线上,则以两图在X\、Y方向的延长线上去找两个点,使其能连成直线是否相邻消去是否直线相连消去不能消去消去将25个图片和LianLianKan.java文件存在同一个文件夹里javacLianLianKan.javajavaLianLianKan二、程序上机调试报告【语法错误及其排除】将图片加载在按钮上,并在调用按钮时会出现随机的图片时出现错误,最后创建了一个方法JButtoncreateImgBtn(Stringing,Stringtxt),作用是传进两个String类型的参数,返回带有数字和图片的按钮,方法中的主要内容有ImageIconimage=newImageIcon(getClass().getResource(ing));JButtonbutton=newJButton(txt,image);通过调用这个方法就可以将图片与按钮固定在一起。加载计时器时出现错误,即如果只在初始方法init()里调用timerDemo()方法时,在点击重列按钮或者下一局按钮时,时间提示里的时间是两次时间相掺杂的;改为只在main()方法里调用timerDemo()方法,在点击重列按钮时没有问题,但在点击下一局按钮时,时间还是相掺杂着出现;最后改为在main()方法里调用timerDemo()方法的同时在actionPerformed()方法里将if(e.getSource()==newlyButton){intgrid[][]=newint[8][7];this.grid=grid;randomBuild();mainFrame.setVisible(false);pressInformation=false;Init();}改为:if(e.getSource()==newlyButton){flag=true;intgrid[][]=newint[8][7];this.grid=grid;randomBuild();mainFrame.setVisible(false);pressInformation=false;init();timerDemo();}【算法错误及其排除】在编辑randomBuild()方法产生随机的两两相同的数字时,程序中会出现并非两两相同的图片,达不到预期的效果,后改为在randomBuild()方法里添加如下这样的程序:while(grid[cols][rows]!=0){cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);}程序才正确。在编辑程序时,定义了一个grid数组,用来存放游戏按钮的位置,刚开始定义的是6行5列,结果玩游戏时,周边的按钮不能被消去,后将数组改为8行7列时才可以,这样按钮周边的一圈就是空按钮,周边的按钮就可以被消去。三、程序测试结果【测试数据】1、程序运行结果:2、点击重列按钮结果:3、点击下一局:4、游戏结束界面:【输出结果】【收获及体会】通过这次图片连连看游戏的设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的提高自己的水平,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,并且还发现了自己的许多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。同时在这次的设计中也小小的体验了一下做项目的感受。我完成了这次JAVA课程设计,不过这只是我学习路上的驿站。我相信我在未来的学习中会记住从本次课程设计中所学到的东西,并将它用到未来的学习中去。四、源程序代码importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Container;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.Timer;importjava.util.TimerTask;importjavax.swing.ImageIcon;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;publicclassLianLianKanimplementsActionListener{//主面板JFramemainFrame;//面板容器ContainerthisContainer;//子面板JPanelcenterPanel,southPanel,northPanel,westPanel,eastPanel;//游戏按钮数组JButtondiamondsButton[][]=newJButton[6][5];//开始,退出,重列,重新开始按钮JButtonexitButton,resetButton,newlyButton;//JButtonstartButton;//分数标签JLabelfractionL
本文标题:连连看java程序设计
链接地址:https://www.777doc.com/doc-2208645 .html