




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 课程设计2013 2014学年第二学期设计题目 连连看游戏程序 院(系) 专 业 软件工程 班 级 学号 学生姓名 设计时间 2014年6月24日2014年6月27日指导教师 提交日期 2014年6月27日 目录目录21. 课程设计的目的与要求31.1课程设计目的与要求31.2课程设计内容31.3课程设计的实验环境31.4课程设计的预备知识42.系统模块结构图42.1 模块设计52.1.1 菜单控制模块52.1.2 算法模块62.1.3 界面显示模块83.详细设计83.1总体算法思路83.2代码实现94.小结181. 课程设计的目的与要求1.1课程设计目的与要求1.掌握java语言中面向对象
2、的概念,并能在程序中熟练运用。2. 了解面向对象程序设计(java)的基本概念以及运用面向对象技术进行程序设计的基本思想。 3. 能正确编写和调试java程序。4. 了解在java环境下进行程序设计的基本思想和方法。1.2课程设计内容1.设计一个连连看的游戏程序。2.在java环境下,将上述程序使用gui、数据结构等内容完成3.设计思路:(1)界面设计1)初始测试界面可以考虑使用简单的按钮来代表连连看游戏中的图标。2)布局可以考虑使用grid方式。3)设计菜单选择连连看难度等内容,具体可参照qq连连看,也可自定义。4)考虑完善界面,例如动画等。(2)代码设计1)本设计的核心为练练看算法的设计,
3、可以考虑数据结构中的图的遍历章节,合理设计算法,将界面中各按钮的分布映射入数学矩阵进行路径规划。(可以上网搜索相关算法)。2)完成连连看游戏的图形、算法等代码的设计。4.实验步骤(包括操作方法、数据处理)(1)界面设计(2)算法设计(3)代码设计1.3课程设计的实验环境硬件要求能运行windows xp/7操作系统的微机系统。java程序设计语言及相应的集成开发环境, eclipse开发工具。1.4课程设计的预备知识熟悉java语言及eclipse开发工具。2.系统模块结构图根据对“连连看”游戏的分析,该游戏可分为三个模块:算法模块、界面显示模块、控制模块。如下图3-1所示: 连连看游戏界面显
4、示模块控制模块算法模块2.1 模块设计2.1.1控制模块(1). 开始游戏 (2). 游戏结束后重新开始 (3). 提示 (4). 不能操作后自动洗牌如下图3-5所示消图提示洗牌结束判断开始游戏2.1.2 算法模块在检验两个方块能否消掉的时候,我们要让两个方块同时满足两个条件才行,就是两者配对并且连线成功。如图4-3所示分 3 种情况:从下面的这三种情况,我们可以知道,需要三个检测,这三个检测分别检测一条直路经。这样就会有三条路经。若这三条路经上都是空按钮,那么就刚好是三种直线(两个转弯点)把两个按钮连接起来了。 (1)、相邻 (2)、两个按钮分别横向延伸,如果有一条纵向线能将延伸区相连则可消
5、除(3)、若(2)失败两个按钮分别纵向延伸,如果有一条横向线能将延伸区相连则可消除若以上三步都失败,说明这两个按钮不可以消去。具体判断流程见下图(4)、图片成对加载并打乱将图片成对的显示在场景中,并打乱主要用的是map类。在该类中,用了一个数组以数字标记的形式来记录加载的图片是哪种图片,在每次加载图片的时候是一张图片连续加载四次,以保证加载图片成两对。然后用数组的随机方法将数组打乱。 (5)、判断两图是否能够相连两图能相连的所有情况: 2.1.3 界面显示模块1、提示2、统计分数3、提示是否进行下一局或者退出3.详细设计3.1总体算法思路由两个确定的按钮。若这两个按钮的数字相等,就开始找它们相
6、连的路经。这个找路经 * 分3种情况:(从下面的这三种情况,我们可以知道,需要三个检测,这三个检测分别检测一条直路经。这样就会有 * 三条路经。若这三条路经上都是空按钮,那么就刚好是三种直线(两个转弯点)把两个按钮连接起来了) * 1.相邻 * * 2. 若不相邻的先在第一个按钮的同行找一个空按钮。1).找到后看第二个按钮横向到这个空按钮 * 所在的列是否有按钮。2).没有的话再看第一个按钮到与它同行的那个空按钮之间是否有按钮。3).没有的话,再从 * 与第一个按钮同行的那个空按钮竖向到与第二个按钮的同行看是否有按钮。没有的话路经就通了,可以消了. * * 3.若2失败后,再在第一个按钮的同列
7、找一个空按钮。1).找到后看第二个按钮竖向到这个空按钮所在的行是否有按钮。 * 2).没有的话,再看第一个按钮到与它同列的那个空按钮之间是否有按钮。3).没有的话,再从与第一个按钮同列的 * 那个空按钮横向到与第二个按钮同列看是否有按钮。没有的话路经就通了,可以消了。 * * 若以上三步都失败,说明这两个按钮不可以消去。 *3.2代码实现1、mainframe.javajbprompt.addactionlistener(new actionlistener()/提示按钮增加行为监听overridepublic void actionperformed(actionevent arg0) po
8、int sp = new point();point ep = new point();game.tip(sp, ep);jlbsp.x-1sp.y-1.setborder(borderfactory.createlineborder(color.black);jlbep.x-1ep.y-1.setborder(borderfactory.createlineborder(color.black); /每提示一次减10分game.deletescore(10); ); class event implements actionlistener/消除两个相同的图片,若相同,则分数加20分;若不同
9、,不作反应 overridepublic void actionperformed(actionevent arg0) /重写接口方法/获取点击位置myjbutton jlbnext = (myjbutton) arg0.getsource(); /输出坐标system.out.println(+jlbnext.xpoint+,+jlbnext.ypoint+); if(flag)if(game.linkok(jlbfront.xpoint+1,jlbfront.ypoint+1,jlbnext.xpoint+1,jlbnext.ypoint+1)if(game.needrandom()gam
10、e.random(); /通过needrandom()调用,实现抖动,并且重置界面for(int i=0;i10;i+)for(int j=0;j10;j+)if(game.getmymap()i+1j+1!=0)jlbij.seticon(imageicongame.getmymap()i+1j+1-1); if(game.iswin()/赢的时候,提示按钮功能被屏蔽jbprompt.setenabled(false); int n =joptionpane.showconfirmdialog(null, 你的分数是+game.getscore()+是否想再来一局?,提示,joptionpa
11、ne.yes_no_option); /再来一局if(n = joptionpane.yes_option)mainframe f = new mainframe();f.settitle(连连看);f.setvisible(true);f.setsize(800, 850); class myjbutton extends jbutton/实现按钮和图片的比例吻合的功能/* * */private static final long serialversionuid = 1l;public int xpoint;public int ypoint;public myjbutton(scale
12、icon imageicon)super(imageicon);public void setpoint(int x,int y)xpoint = x;ypoint = y;class scaleicon implements icon/初始化图标的大小 /private bufferedimage i = null; private icon icon = null; public scaleicon(icon icon) this.icon = icon; override public int geticonheight() return icon.geticonheight(); ov
13、erride public int geticonwidth() return icon.geticonwidth(); public void painticon(component c, graphics g, int x, int y) float wid = c.getwidth(); float hei = c.getheight(); int iconwid = icon.geticonwidth(); int iconhei = icon.geticonheight(); graphics2d g2d = (graphics2d) g; g2d.setrenderinghint(
14、renderinghints.key_interpolation, renderinghints.value_interpolation_bilinear); g2d.scale(wid / iconwid, hei / iconhei); icon.painticon(c, g2d, 0, 0); 2、game.javapublic boolean startgame()for(i=0;isizex*sizey;i+)int x = (int) (math.random()*100);int a = savei;savei = savex;savex = a;/产生100张图片for(i=0
15、;isizex*sizey;i+)mapi = savei;/把图片的坐标信息放入map里for(i=1;i=sizex;i+)for(j=1;j=sizey;j+)mymapij=map(i-1)*sizey+(j-1);/把图片的坐标信息放入map里return true;public boolean canlink(int startx,int starty,int endx,int endy,int step,int di)/判断能否消除int ss;for(int i=0;i4;i+) /横向搜索int x = startx + dir0i; /纵向搜索int y = starty
16、+ dir1i; /若没搜索到,则跳出if(xsizex+1|ysizey+1)continue;ss = step;if(i!=di)ss = step +1;if(ss =3)continue;if(x=endx&y=endy)return true;elseif(mymapxy = 0 & usedxy != true)usedxy = true;if(canlink(x,y,endx,endy,ss,i)return true;usedxy = false;elsecontinue;return false; public boolean linkok(int startx,int s
17、tarty,int endx,int endy)/是否能消掉图片for(int i=0;iused.length;i+)for(int j=0;jusedi.length;j+)usedij=false;/初始时,定义所有图片都没用过usedstartxstarty = true;if(mymapstartxstarty!=mymapendxendy)return false;if(canlink(startx,starty,endx,endy,-1,-1)mymapstartxstarty = 0;mymapendxendy = 0;gamescore += 20;return true;e
18、lsereturn false; public boolean tip(point sp,point ep)/实现提示功能for(sp.x=1;sp.xsizex;sp.x+)for(sp.y=1;sp.y=sizey;sp.y+)for(ep.x=1;ep.x=sizex;ep.x+)for(ep.y=1;ep.y=sizey;ep.y+)for(int i=0;iused.length;i+)for(int j=0;jusedi.length;j+)usedij=false;/初始时,定义所有图片都没用过usedsp.xsp.y = true;/改变图片的used属性,说明此图片已经消除掉了if(mymapsp.xsp.y=0|mymapep.xep.y=0|(sp.x=ep.x&sp.y=ep.y)|mymapsp.xsp.y!=mymapep.xep.y)continue;/若地图里mymapsp.xsp.y或者mymapsp.xsp.y没有图片,则跳出当前循环if(canlink(sp.x,sp.y,ep.x,ep.y,-1,-1)return true;/如果能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商业欠款合同协议
- 楼顶建筑转让合同协议
- 咖啡花店合伙协议书模板
- 恶意起诉借款合同协议
- 员工培养协议书范本
- 2025如何签订租赁合同
- 2025标准短期用工合同模板
- 商业水表销售合同协议
- 2025年城市市区内商业店铺租赁合同
- 员工事故协议书范本
- 福建省平和广兆中学2024−2025学年高一下学期3月月考数学试卷(含解析)
- 2025春季建投国电准格尔旗能源有限公司招聘31人(内蒙古)笔试参考题库附带答案详解
- 租房养狗合同补充协议
- 辽宁省沈阳市2023−2024学年高一下学期期中考试数学试卷(含解析)
- 2025年北京市各区高三语文一模记叙文范文汇编
- 重庆市渝北区六校联盟2024-2025学年七年级下学期第一次(半期)教学大练兵语文试卷
- 自主无人系统
- 电影音乐欣赏智慧树知到课后章节答案2023年下华南农业大学
- GA/T 1359-2018信息安全技术信息资产安全管理产品安全技术要求
- 商业发票模板(INVOICE)
- 2001年湖北高考理综真题及答案
评论
0/150
提交评论