为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 连连看java程序设计

连连看java程序设计

2020-06-07 7页 doc 4MB 5阅读

用户头像 个人认证

ysdg83

从事建筑公司质量、技术

举报
连连看java程序设计.《高级语言程序设计(2)》课程设计任务书 题目 图片连连看游戏程序 学生姓名 学号 专业班级 设计内容与要求 【问题描述】图片连连看游戏是利用java图形用户界面设计而设计的图片连连看游戏界面。它的游戏规则就是选择一对内容相同的图案进行连线,但此连线不能穿跨其他图案。连线的转折点不能多于两个,如果符合规定则消除此对图案。如果游戏找不到可连接消除的图案,可以通过鼠标点击重列按钮让它重新排列图案,也可以通过鼠标重新开始新的游戏,时间结束后游戏自动结束,还可以通过鼠标退出游戏。【软件功能】1利用awt实现良好的游戏界面,游戏...
连连看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.没有的话,再从与第一个按钮同列的那个空按钮横向到与第二个按钮同列看是否有按钮。没有的话路经就通了,可以消了。若以上三步都失败,说明这两个按钮不可以消去两图能相连的所有情况:EMBEDVisio.Drawing.11EMBEDVisio.Drawing.11【类的设计】图片连连看游戏程序中只有一个类,类名为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对象【模块流程图】主模块流程图:用户界面模块流程图:算法模块流程图:否是是否是否否是是是否是否否是否【运行说明】将25个图片和LianLianKan.java文件存在同一个文件夹里javacLianLianKan.javajavaLianLianKan2、程序上机调试报告【语法错误及其排除】将图片加载在按钮上,并在调用按钮时会出现随机的图片时出现错误,最后创建了一个方法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列时才可以,这样按钮周边的一圈就是空按钮,周边的按钮就可以被消去。3、程序测试结果【测试数据】1、程序运行结果:2、点击重列按钮结果:3、点击下一局:4、游戏结束界面:【输出结果】【收获及体会】通过这次图片连连看游戏的设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的提高自己的水平,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,并且还发现了自己的许多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。同时在这次的设计中也小小的体验了一下做项目的感受。我完成了这次JAVA课程设计,不过这只是我学习路上的驿站。我相信我在未来的学习中会记住从本次课程设计中所学到的东西,并将它用到未来的学习中去。4、源程序代码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;//分数标签JLabelfractionLable=newJLabel("0");//时间标签JLabeltime=newJLabel("");//分别记录两次被选中的按钮JButtonfristButton,secondButton;//储存游戏按钮位置intgrid[][]=newint[8][7];//判断是否有按钮被击中staticbooleanpressInformation=false;//被选中的两个游戏按钮的位置坐标(x0,y0),(x,y)intx0=0,y0=0,x=0,y=0;//两个被选中按钮上相应的数字intfristMsg=0,secondMsg=0;inti,j,k,n;//ints=0;finalTimert=newTimer();Colorb=Color.orange;Colorg=Color.cyan;Colorm=Color.pink;//Colorc=Color.blue;booleanflag;//初始化publicvoidinit(){//创建主面板,并命为连连看mainFrame=newJFrame("连连看");thisContainer=mainFrame.getContentPane();//thisContainer.setBackground(c);/***把thisContainer划分为Center、South、North三个区域*North区域添加分数*Center区域添加游戏按钮*South区域添加退出、重列、下一局等按钮*/thisContainer.setLayout(newBorderLayout());centerPanel=newJPanel();centerPanel.setBackground(b);southPanel=newJPanel();southPanel.setBackground(g);northPanel=newJPanel(newBorderLayout());//northPanel.setBackground(m);westPanel=newJPanel();westPanel.setBackground(m);eastPanel=newJPanel();eastPanel.setBackground(m);//Labeltime=newLabel("剩余时间:");thisContainer.add(centerPanel,"Center");thisContainer.add(southPanel,"South");thisContainer.add(northPanel,"North");northPanel.add(westPanel,"West");northPanel.add(eastPanel,"Center");westPanel.add(BorderLayout.WEST,newJLabel("剩余时间:"));westPanel.add(BorderLayout.EAST,time);eastPanel.add(BorderLayout.CENTER,newJLabel("您的得分:"));eastPanel.add(BorderLayout.EAST,fractionLable);eastPanel.add(fractionLable,"Center");//northPanel.add(fractionLable);/***eastPanel.add(newJLabel("您的得分:"));*eastPanel.add(fractionLable);*westPanel.add(BorderLayout.WEST,newJLabel("剩余时间:"));*westPanel.add(BorderLayout.EAST,newJLabel(time));*northPanel.add(westPanel);*///把CenterPanel区域设置为网格布局centerPanel.setLayout(newGridLayout(6,5));for(intcols=0;cols<6;cols++){for(introws=0;rows<5;rows++){if(grid[cols+1][rows+1]!=0){//给指定按钮添加图片diamondsButton[cols][rows]=createImgBtn(grid[cols+1][rows+1]+".jpg",String.valueOf(grid[cols+1][rows+1]));}else{//当指定按钮为空时传空字符串即照片为传的照片为空diamondsButton[cols][rows]=createImgBtn("",String.valueOf(grid[cols+1][rows+1]));}/***else*{*//当指定按钮为空时将其定义为新的按钮*diamondsButton[cols][rows]=newJButton();*}*/diamondsButton[cols][rows].addActionListener(this);centerPanel.add(diamondsButton[cols][rows]);}}//startButton=newJButton("开始");//startButton.addActionListener(this);exitButton=newJButton("退出");exitButton.addActionListener(this);resetButton=newJButton("重列");resetButton.addActionListener(this);newlyButton=newJButton("下一局");newlyButton.addActionListener(this);//southPanel.add(startButton);southPanel.add(exitButton);southPanel.add(resetButton);southPanel.add(newlyButton);/***为该标签设置一个文本字符串*该字符串为标签字符串所显示的文本字符串作为有符号的十进制整数为参数的字符串*/fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())));mainFrame.setBounds(180,10,800,650);//设置主面板的位置和大小mainFrame.setVisible(false);mainFrame.setVisible(true);//centerPanel.setVisible(false);//timerDemo();}//创建带有图片的按钮publicJButtoncreateImgBtn(Stringing,Stringtxt){//根据给定名称的资源创建一个ImageIcon。ImageIconimage=newImageIcon(getClass().getResource(ing));JButtonbutton=newJButton(txt,image);//设置文本(即数字)相对于图标的垂直位置为底及水平位置为中心button.setVerticalTextPosition(JButton.BOTTOM);button.setHorizontalTextPosition(JButton.CENTER);returnbutton;}/***产生游戏中的随机数字*数字至少两两相同*/publicvoidrandomBuild(){intrandoms,cols,rows;for(inttwins=1;twins<=15;twins++){randoms=(int)(Math.random()*25+1);//随机产生一个1~25的数字for(intalike=1;alike<=2;alike++){//产生两个随机的坐标来存放同一个数字cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);while(grid[cols][rows]!=0)//避免出现重复的坐标{cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);}this.grid[cols][rows]=randoms;}}}//计算得分publicvoidfraction(){fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100));}//重列publicvoidreload(){intsave[]=newint[30];intn=0,cols,rows;intgrid[][]=newint[8][7];//time.setVisible(false);for(inti=0;i<=6;i++){for(intj=0;j<=5;j++){if(this.grid[i][j]!=0){//将未消去的图片的数字放在save数组中save[n]=this.grid[i][j];n++;}}}n=n-1;this.grid=grid;//把grid数组全部初始化为零while(n>=0){//将剩下的所有图片数字重新随机放在数组grid中cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);while(grid[cols][rows]!=0)//避免出现重复的坐标{cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);}this.grid[cols][rows]=save[n];n--;}mainFrame.setVisible(false);//将按钮点击信息归为初始pressInformation=false;init();for(inti=0;i<6;i++){for(intj=0;j<5;j++){if(grid[i+1][j+1]==0){//将消去的按钮设置为不可见diamondsButton[i][j].setVisible(false);}}}}//选中按钮信息的存储与操作publicvoidestimateEven(intplaceX,intplaceY,JButtonbz){if(pressInformation==false){//如果第一个按钮未被击中,则将传来的按钮坐标赋给(x,y)x=placeX;y=placeY;fristMsg=grid[x][y];//将按钮上的数字赋给fristMsgfristButton=bz;//将(placeX,placey)位置上的按钮bz赋给fristButtonpressInformation=true;//将按钮点击信息设置为true}else{/***如果第一个按钮被击中,则将第一个按钮坐标赋给(x0,y0)*将fristButton按钮赋给secondButton按钮*将传来的按钮坐标赋给坐标(x,y)*如果当两个不同的按钮上的数字相等时则调用remove()函数消去*/x0=x;y0=y;secondMsg=fristMsg;//将击中的第一个按钮上的数字赋给第二个按钮secondButton=fristButton;//将第一个按钮赋给第二个按钮x=placeX;y=placeY;fristMsg=grid[x][y];//将传过来的按钮上的数字赋给fristMsgfristButton=bz;//将传过来的按钮赋给fristButtonif(fristMsg==secondMsg&&secondButton!=fristButton){//如果当两个不同的按钮上的数字相等时则消去xiao();}}}//消去publicvoidxiao(){if((x0==x&&(y0==y+1||y0==y-1))||((x0==x+1||x0==x-1)&&(y0==y))){//如果两个按钮相邻,则消去remove();}else{//如果两个按钮不相邻//判断与第一按钮同行的情况for(j=0;j<7;j++){//判断第一个按钮同行哪个按钮为空if(grid[x0][j]==0){//如果同行有空按钮if(y>j){//如果第二个按钮的y坐标大于空按钮的j坐标说明空按钮在第二按钮左边for(i=y-1;i>=j;i--){//判断第二按钮左侧直到位置(x,j)有没有按钮//即判断与空按钮同列、与第二按钮同行的位置到第二按钮的左侧为止有没有按钮if(grid[x][i]!=0){//如果有按钮,则将k初始化为零,并将跳出循环k=0;break;}else{//如果没有按钮k=1;//K=1说明通过了第一次验证}}if(k==1){//k==1说明横坐标为x,纵坐标从j到(y-1)的位置都没有按钮//即说明与空按钮同列、与第二按钮同行的位置到第二按钮的左侧为止没有按钮linePassOne();}}if(y<j){//如果第二个按钮的y坐标小于空按钮的j坐标说明空按钮在第二按钮右边for(i=y+1;i<=j;i++){//判断第二按钮右侧直到位置(x,j)有没有按钮if(grid[x][i]!=0){//如果有按钮,则将k初始化为零,并将跳出循环k=0;break;}else{//如果没有按钮k=1;}}if(k==1){//通过第一次验证,即第二按钮右侧直到位置(x,j)没有按钮linePassOne();}}if(y==j){//第二个按钮与空按钮同列,即第二按钮与第一按钮同行linePassOne();}}if(k==2){//通过第二验证if(x0==x){//两个按钮在同一行remove();}if(x0<x){//第二个按钮所在行在第一按钮所在行的下面for(n=x0;n<=x-1;n++){//判断空按钮下侧直到位置(x-1,j)有没有按钮if(grid[n][j]!=0){//如果有按钮,将k初始化为零,并跳出循环k=0;break;}if(grid[n][j]==0&&n==x-1){//如果直到位置(x-1,j)没有按钮remove();}}}if(x0>x){//第二个按钮所在行在第一按钮所在行的上面for(n=x0;n>=x+1;n--){//判断空按钮上侧直到位置(x+1,j)有没有按钮if(grid[n][j]!=0){//如果有按钮,将k初始化为零,并跳出循环k=0;break;}if(grid[n][j]==0&&n==x+1){//如果直到位置(x+1,j)没有按钮remove();}}}}}//判断与第一按钮同列情况for(i=0;i<8;i++){//判断第一个按钮同列哪个按钮为空if(grid[i][y0]==0){//同列有空按钮if(x>i){//如果第二个按钮的x坐标大于空按钮的i坐标说明空按钮在第二按钮上边for(j=x-1;j>=i;j--){//判断第二按钮上侧直到位置(i,y)有没有按钮if(grid[j][y]!=0){//如果有按钮,将k初始化为零,并跳出循环k=0;break;}else{//如果没有按钮k=1;//说明通过第一次验证}}if(k==1){//第二按钮上侧直到位置(i,y)没有按钮rowPassOne();}}if(x<i){//空按钮在第二按钮下边for(j=x+1;j<=i;j++){//判断第二按钮下侧直到位置(i,y)有没有按钮if(grid[j][y]!=0){k=0;break;}else{k=1;}}if(k==1){//第二按钮下侧直到位置(i,y)没有按钮rowPassOne();}}if(x==i){//第二按钮与空按钮同行rowPassOne();}}if(k==2){//通过第二次验证if(y0==y){//两个按钮同列remove();}if(y0<y){//第二按钮所在行在第一按钮所在行的下面for(n=y0;n<=y-1;n++){//判断空按钮右侧直到位置(i,y-1)有没有按钮if(grid[i][n]!=0){//如果有按钮,将k初始化为零,并跳出循环k=0;break;}if(grid[i][n]==0&&n==y-1){//空按钮右侧直到位置(i,y-1)没有按钮remove();}}}if(y0>y){//第二按钮所在行在第一按钮所在行的上面for(n=y0;n>=y+1;n--){//判断空按钮左侧直到位置(i,y+1)有没有按钮if(grid[i][n]!=0){k=0;break;}if(grid[i][n]==0&&n==y+1){//空按钮左侧直到位置(i,y+1)没有按钮remove();}}}}}}}/***第一按钮的同行中存在空按钮*判断在同一行中空按钮与第一个按钮之间的位置是否有按钮存在,如果有则k=0,否则k=2**/publicvoidlinePassOne(){if(y0>j){//第一按钮在同行空按钮的右边for(i=y0-1;i>=j;i--){//判断第一按钮同左侧空按钮之间有没按钮if(grid[x0][i]!=0){//如果有按钮,将k初始化为零,并跳出循环k=0;break;}else{//如果没有按钮k=2;//K=2说明通过了第二次验证}}}if(y0<j){//第一按钮在同行空按钮的左边for(i=y0+1;i<=j;i++){//判断第一按钮同右侧空按钮之间有没按钮if(grid[x0][i]!=0){//如果有按钮,将k初始化为零,并跳出循环k=0;break;}else{k=2;}}}}/***第一按钮的同列中存在空按钮*判断在同一列中空按钮与第一个按钮之间的位置是否有按钮存在,如果有则k=0,否则k=2**/publicvoidrowPassOne(){if(x0>i){//第一按钮在同列空按钮的下边for(j=x0-1;j>=i;j--){//判断第一按钮同上侧空按钮之间有没按钮if(grid[j][y0]!=0){//如果有按钮,将k初始化为零,并跳出循环k=0;break;}else{//如果没有按钮k=2;//K=2说明通过了第二次验证}}}if(x0<i){//第一按钮在同列空按钮的上边for(j=x0+1;j<=i;j++){//判断第一按钮同下侧空按钮之间有没按钮if(grid[j][y0]!=0){k=0;break;}else{k=2;}}}}//将相同两个按钮消去,即设为不可见publicvoidremove(){fristButton.setVisible(false);secondButton.setVisible(false);fraction();//每消去一对按钮则加100分/***将点击按钮信息归为初始*将K和被消去的两个按钮的坐标初始为零*/pressInformation=false;k=0;grid[x0][y0]=0;grid[x][y]=0;}//实现事件监听publicvoidactionPerformed(ActionEvente){//if(e.getSource()==startButton)//{//点击开始按钮事件////init();//centerPanel.setVisible(true);//timerDemo();//flag=true;//}if(e.getSource()==newlyButton){//点击下一局按钮事件//t.cancel();flag=true;intgrid[][]=newint[8][7];this.grid=grid;//将grid数组初始化为零randomBuild();//重新获取15个随机的1~25的数字//将一切信息归为初始mainFrame.setVisible(false);pressInformation=false;//fractionLable.setText("0");init();//t.cancel();timerDemo();//time.setVisible(false);//timerDemo();//time.setVisible(true);}if(e.getSource()==exitButton){//点击退出按钮事件System.exit(0);}if(e.getSource()==resetButton){//点击重列按钮事件reload();}for(intcols=0;cols<6;cols++){for(introws=0;rows<5;rows++){if(e.getSource()==diamondsButton[cols][rows]){//当点击按钮时,调用estimateEven方法estimateEven(cols+1,rows+1,diamondsButton[cols][rows]);}}}}/***publicvoidtimerDemo()*{*t.schedule(newTimerTask()*{*inti=60;*publicvoidrun()*{*if(i==0)*{*time.setText("gameover");*t.cancel();*}*else*{*time.setText(""+i--);*}*},1000,1000);*}**///时间提示publicvoidtimerDemo(){//finalTimertimer=newTimer();/***schedule(TimerTasktask,DatefirstTime,longperiod)*安排指定的任务在指定的时间开始进行重复的固定延迟执行**/t.schedule(newTimerTask(){//创建一个新的计时器任务ints=45;//总时间publicvoidrun(){//此计时器任务要执行的操作if(flag==true){this.cancel();//取消此计时器任务flag=false;}if(s==0){//时间跑完,则游戏结束time.setText("gameover");//this.cancel();//当时间跑完时,将未点击的按钮设为不可见for(inti=0;i<6;i++){for(intj=0;j<5;j++){if(grid[i+1][j+1]!=0)diamondsButton[i][j].setVisible(false);}}//JLabell=newJLabel("GimeOver!",JLabel.CENTER);//JPanelCenter,North,Sourth;//centerPanel.add(l);resetButton.setVisible(false);newlyButton.setVisible(false);}else{time.setText(""+s--);}}},1000,1000);}//主方法publicstaticvoidmain(String[]args){LianLianKanllk=newLianLianKan();llk.randomBuild();//获取15个随机的1~25的数字llk.init();llk.timerDemo();}}程序中调用的图片:1.jpg2.jpg3.jpg5.jpg19.jpg18.jpg17.jpg16.jpg15,jpg14.jpg13.jpg12.jpg11.jpg10.jpg8.jpg7.jpg6.jpg25.jpg24.jpg22.jpg21.jpg20.jpg23.jpg9.jpg4.jpgrowPassOne()linePassOne()remove()xiao()init()timerDemo()randomBuild()estimateEven()reload()actionPerformed()createImgBtn()fractionLabel()init()timerDemo()main方法randomBuild()连连看游戏用户界面模块菜单模块算法模块Button下一局Button重列Button退出Label:您的得分Label:Fraction(分数)Label:TimeLabel:剩余时间EastPanelBorderLayout布局WestPanelBorderLayout布局thisContainer主界面NorthPanelBorderLayout布局SouthPanelBorderLayout布局CenterPanelGriLayout布局(7x8)消去是否直线相连消去是否相邻消去是否直线相连是否相邻是否为同一图片消去不能消去是否在一条竖线是否在一条横线是否在同一位置当两图不在一条直线上,则以两图在X\、Y方向的延长线上去找两个点,使其能连成直线不能消去消去._1234567891.vsd�(2)_1234567893.vsd�(4)_1234567894.vsd�(5)_1234567895.vsd�(6)_1234567892.vsd�(3)_1234567890.vsd�(1)
/
本文档为【连连看java程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索