为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

java QQ连连看

2017-09-02 18页 doc 190KB 61阅读

用户头像

is_562397

暂无简介

举报
java QQ连连看java QQ连连看 (论文首页纸) 2011—2012 学年第 二 学期 课程名称: Java程序设计 任课教师: 康恺 论文题目: QQ连连看 学号: SWE10029 姓名: 康黎明 年级: 2010级 专业: 软件工程 班级: 提交日期:2012年6月20日 目录页 一、课题介绍 ..............................................................................................................
java  QQ连连看
java QQ连连看 (首页纸) 2011—2012 学年第 二 学期 课程名称: Java程序 任课教师: 康恺 论文题目: QQ连连看 学号: SWE10029 姓名: 康黎明 年级: 2010级 专业: 软件 班级: 提交日期:2012年6月20日 目录页 一、课题介绍 ................................................................................................................................... 3 二、成品操作步骤 ........................................................................................................................... 3 1、游戏开始界面 ..................................................................................................................... 3 2、游戏帮助文档界面 ............................................................................................................. 3 3、游戏操作界面 ..................................................................................................................... 4 4、游戏结束界面 ..................................................................................................................... 4 三、分析与设计 ............................................................................................................................... 4 1、QQ连连看小游戏界面布局设计思路 .............................................................................. 4 2、 QQ连连看小游戏界面算法设计思路 ............................................................................ 5 3、 QQ连连看小游戏连接算法分析 .................................................................................... 6 4、 鼠标点击的信息算法分析....................................................................................... 9 5、 QQ连连看小游戏重新排列算法分析 ............................................................................ 9 四、遇到的问题和解决 ........................................................................................................... 9 1、界面设计问题 ..................................................................................................................... 9 2、 界面布局问题 .................................................................................................................. 9 3、 游戏算法实现问题 ........................................................................................................ 10 4、 游戏死锁问题之刷新功能的实现和设置只能使用三次问题 ..................................... 10 5、 音效设置问题 ................................................................................................................ 10 6、 生命值(倒计时)问题................................................................................................. 10 五、总结......................................................................................................................................... 11 六、参考资料 ................................................................................................................................. 11 一、课题介绍 进入二十一世纪,饱受工作压力的上班族没有太多的时间进行一些复杂的游戏,而对于我设 计的这种QQ连连看单机小游戏,动一动鼠标就能过关的小游戏肯定情有独钟,在这闲余之 际可以瞬间释放所有压力,广受人们的热爱。 二、成品操作步骤 1、游戏开始界面 如图 2.1所示 图 2.1 游戏界面 2、游戏帮助文档界面 如图 2.2所示 图2.2 游戏帮助文档 3、游戏操作界面 如图2.3所示 (游戏操作详见游戏帮助文档) 图2.3 游戏操作界面 4、游戏结束界面 (玩家可以根据选择是否重新开始新的游戏,选择是重新开始游戏,如果选择否,则进入游 戏开始界面) 如图2.4所示 图2.4 游戏结束界面 三、分析与设计 1、QQ连连看小游戏界面布局设计思路 如图3.1所示 (1)界面最上方为"欢迎您来到QQ连连看世界!!!"。 (2)界面中心为游戏操作中心。 (3)界面最下方为生命值(倒计时)部分。 (4)界面最右侧为整个游戏的一些功能键。 图3.1 游戏界面布局设计 2、QQ连连看小游戏界面算法设计思路 如图3.2所示 (1)游戏界面的图片必须是成对出现的。 (2)游戏界面的图片是随机生成的。 (3)游戏界面的相同图片的位置是随机的。 因此要用随机函数来解决这些问题。 图3.2 游戏界面算法设计 建立一个产生随机数的方法,并且每个随机数都是成对出现的 public void randomBuild() //建立随机生成方法,每个随机数都是成对的 { //详见源码部分 //循环50次,产生50个随机数 //产生小于37的随机数 /*循环2次,产生2组随机的cols、rows值做二维数组的行列号, 使得位置是随机的.并将随机数randoms赋值给这2个元素,保证 产生的随机数是成对出现的*/ } 3、QQ连连看小游戏连接算法分析 我们知道连连看的连线规则有3种: (1)一条连线的情况: 如图3.3所示 图3.3 可以消除的图案 (2)二条连线的情况: 如图3.4所示 图3.4 可消除的图案 (3)三条连线的情况: 如图3.5、3.6所示 图 3.5 可消除的图案 图3.6 可消除的图案 因为此处所应用到的知识就有我们上学期所学到的数据结构课本中的宽度优先搜索算法(又 称广度优先搜索)BFS算法,其详细的每句算法全部在源码都附有注释。下面简单介绍连接 搜索的方法 public void xiao() { if((x0==x &&(y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)&&(y0==y))) //判断是否相邻 remove(); //如果是相邻的直接消除 else//判断第一个按钮同行哪个按钮为空 //如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边 if (y>j) { //判断第二按钮左侧直到第一按钮中间有没有按钮 if //如果之间存在按钮 { //遇到障碍就不用再探测 } else linePassOne(); //说明通过了第一次验证 } if (yx) //在同一列上方 { for (n=x0;n>=x+1 ;n-- ) { if //如果之间存在按钮 { //遇到障碍不再继续探测 } if(grid[n][j]==0 && n==x+1) { remove(); //如果之间不存在按钮则消除 } } } } 接着从列开始判断,其方法和判断行一样(详见源码注释)。 4、记录鼠标点击的信息算法分析 public void estimateEven(int placeX,int placeY,JButton bz) //记录每次单击按钮的信息 { //详见源码部分 if(pressInformation==false) { //x,y为第一次单击图形块的坐标 //secondMsg为按钮上的图片 } else { //x,y为第二次单击图形块的坐标 if(fristMsg==secondMsg && secondButton!=firstButton) //当2次单击图形相同,但不是同一块图片时,可以消除 xiao(); //消除 } } 5、QQ连连看小游戏重新排列算法分析 Public void reload() //重新排列图形块位置 { //详见源码部分 //定义一个数组来保存当前每块图形块的信息 //保存每个图形块的图案信息 //随机重新产生图像块位置,并将保存的图案赋值给它 } 四、遇到的问题和解决方法 1、界面设计问题 这是起初一直在思考,分为开始界面,帮助界面,和游戏界面。后来用三个方法public void Start(){}、 public void init(){}、public void Help(){},main方法从Start()开始界面启动。 2、界面布局问题 一直在思考怎么设计游戏界面更加美观。因此后来将游戏布局分为: thisContainer.add(centerPanel,"Center"); thisContainer.add(southPanel,"South"); thisContainer.add(eastPanel,"East"); thisContainer.add(northPanel,"North"); 将游戏功能按键放在游戏界面的右侧,"欢迎您来到QQ连连看世界~~~"至于最上侧,生命值(倒计时)功能放在游戏界面的最下侧,游戏整个中心位置为GridLayout布局。 3、游戏算法实现问题 涉及获取玩家所按图片的位置和怎么把相同的二个图片在小于三个拐点内怎么消掉。问题解决:首先最主要的是要获取玩家点击图片的位置,所以我先写了public void estimateEven(int placeX,int placeY,JButton bz) //记录点击按钮位置 { //详细的参考源码的解决方法 } 方法记录所点击的位置然后对其所点击的二个位置进行判断是否之间无拐点、只有一个拐 点和二个拐点,然后再对其符合条件的这二个进行消掉 public void remove() { firstButton.setVisible(false); //将这二个符合条件的设为不可见 secondButton.setVisible(false); fraction(); //游戏记录分数方法 pressInformation=false; //将当前记录的位置释放,化为初始 k=0; grid[x0][y0]=0; grid[x][y]=0; } 4、游戏死锁问题之刷新功能的实现和设置只能使用三次问题 首先地图刷新就是要使当前的数组打乱了进行重新的排列。解决方法:为刷新功能建立一个public void reload()方法,然后全局定义private int leftcount=3;为刷新按键添加监听事件,每按一次刷新,leftcount--,判断leftcount是否为0。 5、音效设置问题 为了能够使整个游戏生动美妙。因此为游戏添加了背景音乐, Applet.newAudioClip(this.getClass().getResource("music/123.mid")); 设置开启音乐和关闭音乐功能键,为其添加监听事件控制开启和关闭背景音乐。解决方法: if(e.getSource()==openButton) { audio.loop(); } else if (e.getSource()==offButton) { audio.stop(); } 6、生命值(倒计时)问题 想在为时间快到的前10秒再设置一个响铃音效(让玩家更具有紧张感)。因此我在判断画图的矩形快到结束的方法之前又设置一个在此结束之前一段距离的时刻让响铃音效开启。解决 方法: public boolean isEnd() //判断时间结束的矩形画 { if (cnt++ > this.getWidth()) return true; repaint(); return false; } public boolean IsEnd() //自己给提醒时间功能设置个位点 { if (cnt++ > 400) return true; repaint(); return false; } 之后再给timer添加一个监听事件: if (e.getSource() == timer) { if (time.IsEnd()) { audio1.play(); //提示时间快结束的响铃 if (time.isEnd()) { timer.stop(); } } } 五、总结 通过这次程序课程设计,首先我对java程序设计语言有了更深刻的理解,同时认识到和所有的程序设计语言一样,要学好Java语言,实验是必不可少的环节。我深有体会:书上的程序都能看懂,基本原理也都明白,但是在自己亲手编写程序时,却无从下手,甚至连怎么下手该怎么写都不知道。在整个开发小游戏过程中,碰到很多问题,很多问题是对以前学习的不牢固和不会应用造成的,就举例本程序课程最重要的一部分算法设计(数据结构)通过实验,可以在很大程度上加深印象。在书上看程序,一切都是理所当然,十分顺利,而自己动手,才会真正发现自己的不足之处。不论做什么事情都要有耐心,在实际应用知识之前一定要认真掌握好基础理论知识,从而在实践中得以灵活的应用。 六、参考资料 张思明 Java 开发技术与工程实践 2010年 清华大学出版社 Y.Daniel Liang Java语言程序设计基础篇 2012年 机械工业出版社 严蔚敏 吴伟民 数据结构 2011年 清华大学出版社
/
本文档为【java QQ连连看】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索