版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
"高级语言程序设计〔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.没有的话,再从与第一个按钮同列的那个空按钮横向到与第二个按钮同列看是否有按钮。没有的话路经就通了,可以消了。假设以上三步都失败,说明这两个按钮不可以消去两图能相连的所有情况:【类的设计】图片连连看游戏程序中只有一个类,类名为LianLianKan,该类实现了接口ActionListener;该类总共有十三个方法,他们的功能分别是:init()初始化;createImgBtn()传进两个String类型的参数,返回带有数字和图片的按钮;randomBuild(),产生十五对随机的数字;fraction()计算得分;reload()将游戏按钮重列;estimateEven()传进两个int型和一个utton型的三个参数(分别是击中的按钮位置坐标和按钮),选中按钮信息的存储与操作;*iao()消去符合游戏规则的一样的两个按钮;linePassOne()在第一按钮同行有空按钮的条件下判断第二转折点出现的情况;rowPassOne()在第一按钮同列有空按钮的条件下判断第二转折点出现的情况;remove()将一样的两个按钮消去;actionPerformed()实现按钮事件的监听;timerDemo()时间提示;main()主方法;【用户界面】【程序技巧】1. 程序采用图形用户界面,简单大方,且易于操作;2. 连连看图片采用大家熟悉的图片,能激起玩家的游戏兴趣;3. 游戏功能较为齐全,可实现退出、重列和下一局的功能,重列功能可对游戏中剩余的图片进展重新排列,使游戏继续进展,下一局功能可以使游戏重新开场4. 游戏具有倒计时功能,能够控制游戏时限,使游戏具有一定难度,倒计时完毕时显示“gameover〞5. 游戏可以统计玩家的游戏得分【模块划分及调用关系】根据对连连看游戏的分析,该游戏可分化为三个模块:算法模块、界面显示模块、菜单控制模块。调用关系:rowPassOne()linePassOne()remove()*iao()init()timerDemo()randomBuild()estimateEven()reload()actionPerformed()createImgBtn()fractionLabel()init()timerDemo()main方法randomBuild()rowPassOne()linePassOne()remove()*iao()init()timerDemo()randomBuild()estimateEven()reload()actionPerformed()createImgBtn()fractionLabel()init()timerDemo()main方法randomBuild()新建LianLianKan对象【模块流程图】主模块流程图:连连看游戏连连看游戏用户界面模块菜单模块算法模块用户界面模块菜单模块算法模块用户界面模块流程图:Button下一局Button重列Button退出Label:您的得分Label:Fraction(分数)Label:TimeLabel:剩余时间EastPanelBorderLayout布局WestPanelBorderLayout布局thisContainer主界面NorthPanelBorderLayout布局SouthPanelBorderLayout布局Button下一局Button重列Button退出Label:您的得分Label:Fraction(分数)Label:TimeLabel:剩余时间EastPanelBorderLayout布局WestPanelBorderLayout布局thisContainer主界面NorthPanelBorderLayout布局SouthPanelBorderLayout布局CCenterPanelGriLayout布局〔7*8〕算法模块流程图:消去是否直线相连消去是否相邻消去是否直线相连是否相邻是否为同一图片消去不能消去是否在一条竖线是否在一条横线是否在同一位置消去是否直线相连消去是否相邻消去是否直线相连是否相邻是否为同一图片消去不能消去是否在一条竖线是否在一条横线是否在同一位置否是是否是否否是是是否是否否当两图不在一条直线上,则以两图在*\、Y方向的延长线上去找两个点,使其能连成直线当两图不在一条直线上,则以两图在*\、Y方向的延长线上去找两个点,使其能连成直线是否不能消去不能消去消去消去【运行说明】将25个图片和LianLianKan.java文件存在同一个文件夹里javacLianLianKan.javajavaLianLianKan程序上机调试报告【语法错误及其排除】将图片加载在按钮上,并在调用按钮时会出现随机的图片时出现错误,最后创立了一个方法uttoncreateImgBtn(Stringing,Stringt*t),作用是传进两个String类型的参数,返回带有数字和图片的按钮,方法中的主要内容有ImageIconimage=newImageIcon(getClass().getResource(ing));uttonbutton=newutton(t*t,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;importjava*.swing.ImageIcon;importjava*.swing.utton;importjava*.swing.JFrame;importjava*.swing.JLabel;importjava*.swing.JPanel;publicclassLianLianKanimplementsActionListener{//主面板 JFramemainFrame; //面板容器 ContainerthisContainer; //子面板 JPanelcenterPanel,southPanel,northPanel,westPanel,eastPanel; //游戏按钮数组 uttondiamondsButton[][]=newutton[6][5]; //开场,退出,重列,重新开场按钮 uttone*itButton,resetButton,newlyButton;// uttonstartButton; //分数标签 JLabelfractionLable=newJLabel("0"); //时间标签 JLabeltime=newJLabel(""); //分别记录两次被选中的按钮uttonfristButton,secondButton;//储存游戏按钮位置intgrid[][]=newint[8][7];//判断是否有按钮被击中staticbooleanpressInformation=false;//被选中的两个游戏按钮的位置坐标(*0,y0),(*,y)int*0=0,y0=0,*=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]=newutton(); * }*/ diamondsButton[cols][rows].addActionListener(this); centerPanel.add(diamondsButton[cols][rows]); } }// startButton=newutton("开场");// startButton.addActionListener(this); e*itButton=newutton("退出"); e*itButton.addActionListener(this); resetButton=newutton("重列"); resetButton.addActionListener(this); newlyButton=newutton("下一局"); newlyButton.addActionListener(this);// southPanel.add(startButton); southPanel.add(e*itButton); southPanel.add(resetButton); southPanel.add(newlyButton); /** *为该标签设置一个文本字符串 *该字符串为标签字符串所显示的文本字符串作为有符号的十进制整数为参数的字符串 */ fractionLable.setTe*t(String.valueOf(Integer.parseInt(fractionLable.getTe*t()))); mainFrame.setBounds(180,10,800,650);//设置主面板的位置和大小 mainFrame.setVisible(false); mainFrame.setVisible(true);// centerPanel.setVisible(false);// timerDemo(); } //创立带有图片的按钮 publicuttoncreateImgBtn(Stringing,Stringt*t) {//根据给定名称的资源创立一个ImageIcon。 ImageIconimage=newImageIcon(getClass().getResource(ing)); uttonbutton=newutton(t*t,image); //设置文本〔即数字〕相对于图标的垂直位置为底及水平位置为中心 button.setVerticalTe*tPosition(utton.BOTTOM); button.setHorizontalTe*tPosition(utton.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.setTe*t(String.valueOf(Integer.parseInt(fractionLable.getTe*t())+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(intplace*,intplaceY,uttonbz) { if(pressInformation==false) {//如果第一个按钮未被击中,则将传来的按钮坐标赋给(*,y) *=place*; y=placeY; fristMsg=grid[*][y];//将按钮上的数字赋给fristMsg fristButton=bz;//将(place*,placey)位置上的按钮bz赋给fristButton pressInformation=true;//将按钮点击信息设置为true } else {/** *如果第一个按钮被击中,则将第一个按钮坐标赋给(*0,y0) *将fristButton按钮赋给secondButton按钮 *将传来的按钮坐标赋给坐标〔*,y〕 *如果当两个不同的按钮上的数字相等时则调用remove()函数消去 */ *0=*; y0=y; secondMsg=fristMsg;//将击中的第一个按钮上的数字赋给第二个按钮 secondButton=fristButton;//将第一个按钮赋给第二个按钮 *=place*; y=placeY; fristMsg=grid[*][y];//将传过来的按钮上的数字赋给fristMsg fristButton=bz;//将传过来的按钮赋给fristButton if(fristMsg==secondMsg&&secondButton!=fristButton) {//如果当两个不同的按钮上的数字相等时则消去 *iao(); } } } //消去 publicvoid*iao() { if((*0==*&&(y0==y+1||y0==y-1))||((*0==*+1||*0==*-1)&&(y0==y))) {//如果两个按钮相邻,则消去 remove(); } else {//如果两个按钮不相邻 //判断与第一按钮同行的情况 for(j=0;j<7;j++) {//判断第一个按钮同行哪个按钮为空 if(grid[*0][j]==0) {//如果同行有空按钮 if(y>j) {//如果第二个按钮的y坐标大于空按钮的j坐标说明空按钮在第二按钮左边 for(i=y-1;i>=j;i--) {//判断第二按钮左侧直到位置(*,j)有没有按钮 //即判断与空按钮同列、与第二按钮同行的位置到第二按钮的左侧为止有没有按钮 if(grid[*][i]!=0) {//如果有按钮,则将k初始化为零,并将跳出循环 k=0; break; } else {//如果没有按钮 k=1;//K=1说明通过了第一次验证 } } if(k==1) {//k==1说明横坐标为*,纵坐标从j到(y-1)的位置都没有按钮 //即说明与空按钮同列、与第二按钮同行的位置到第二按钮的左侧为止没有按钮 linePassOne(); } } if(y<j) {//如果第二个按钮的y坐标小于空按钮的j坐标说明空按钮在第二按钮右边 for(i=y+1;i<=j;i++) {//判断第二按钮右侧直到位置(*,j)有没有按钮 if(grid[*][i]!=0) {//如果有按钮,则将k初始化为零,并将跳出循环 k=0; break; } else {//如果没有按钮 k=1; } } if(k==1) {//通过第一次验证,即第二按钮右侧直到位置(*,j)没有按钮 linePassOne(); } } if(y==j) {//第二个按钮与空按钮同列,即第二按钮与第一按钮同行 linePassOne(); } } if(k==2) {//通过第二验证 if(*0==*) {//两个按钮在同一行 remove(); } if(*0<*) {//第二个按钮所在行在第一按钮所在行的下面 for(n=*0;n<=*-1;n++) {//判断空按钮下侧直到位置(*-1,j)有没有按钮 if(grid[n][j]!=0) {//如果有按钮,将k初始化为零,并跳出循环 k=0; break; } if(grid[n][j]==0&&n==*-1) {//如果直到位置(*-1,j)没有按钮 remove(); } } } if(*0>*) {//第二个按钮所在行在第一按钮所在行的上面 for(n=*0;n>=*+1;n--) {//判断空按钮上侧直到位置(*+1,j)有没有按钮 if(grid[n][j]!=0) {//如果有按钮,将k初始化为零,并跳出循环 k=0; break; } if(grid[n][j]==0&&n==*+1) {//如果直到位置(*+1,j)没有按钮 remove(); } } } } } //判断与第一按钮同列情况 for(i=0;i<8;i++) {//判断第一个按钮同列哪个按钮为空 if(grid[i][y0]==0) {//同列有空按钮 if(*>i) {//如果第二个按钮的*坐标大于空按钮的i坐标说明空按钮在第二按钮上边 for(j=*-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(*<i) {//空按钮在第二按钮下边 for(j=*+1;j<=i;j++) {//判断第二按钮下侧直到位置(i,y)有没有按钮 if(grid[j][y]!=0) { k=0; break; } else { k=1; } } if(k==1) {//第二按钮下侧直到位置(i,y)没有按钮 rowPassOne(); } } if(*==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[*0][i]!=0) {//如果有按钮,将k初始化为零,并跳出循环 k=0; break; } else {//如果没有按钮 k=2;//K=2说明通过了第二次验证 } } } if(y0<j) {//第一按钮在同行空按钮的左边 for(i=y0+1;i<=j;i++) {//判断第一按钮同右侧空按钮之间有没按钮 if(grid[*0][i]!=0) {//如果有按钮,将k初始化为零,并跳出循环 k=0; break; } else { k=2; } } }} /** *第一按钮的同列中存在空按钮 *判断在同一列中空按钮与第一个按钮之间的位置是否有按钮存在,如果有则k=0,否则k=2 **/ publicvoidrowPassOne() { if(*0>i) {//第一按钮在同列空按钮的下边 for(j=*0-1;j>=i;j--) {//判断第一按钮同上侧空按钮之间有没按钮 if(grid[j][y0]!=0) {//如果有按钮,将k初始化为零,并跳出循环 k=0; break; } else {//如果没有按钮 k=2;//K=2说明通过了第二次验证 } } } if(*0<i) {//第一按钮在同列空按钮的上边 for(j=*0+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[*0][y0]=0; grid[*][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.setTe*t("0"); init();// t.cancel(); timerDemo();// time.setVisible(false);// timerDemo();// time.setVisible(true); } if(e.getSource()==e*itButton) {//点击退出按钮事件 System.e*it(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(new
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年天津渤海职业技术学院单招职业技能考试题库附参考答案详解(巩固)
- 2027年月牙泉丝路学院高职单招职业技能考试题库完整答案详解
- 2026年山西运城职业技术大学高职单招职业技能考试题库重点附答案详解
- 2024年河北商贸职业学院高职单招职业技能考试题库重点附答案详解
- 2024年雅安职业技术学院单招职业技能考试题库(必刷)附答案详解
- 2027年濮阳科技职业学院高职单招职业技能考试题库完整答案详解
- 2025年太行智造学院高职单招职业适应性测试考试模拟试卷【夺冠】附答案详解
- 2027年湖北省荆门市高职单招职业技能考试题库附参考答案详解【黄金题型】
- 2027年河南建筑职业技术学院高职单招职业技能考试模拟试卷(培优B卷)附答案详解
- 2026年内蒙古化工职业学院高职单招职业技能考试题库附答案详解(培优)
- 2026年湖北省环保工程技术职务水平能力测试(环境工程)题库含答案详解
- 2026年北京市海淀区八年级道德与法治下册期末考试试卷及答案
- 2026年广西专业技术人员继续教育公需科目试题(附答案)
- 2026年广西壮族自治区医疗系统事业编乡村医生人员招聘考试备考试题及答案详解
- 2026年山东兖矿招工考试试题及答案
- (HJ 166-2026)《土壤环境监测技术规范》培训课件
- 运输车辆维护保养计划
- 溺水急救诊疗指南(2026年版)基层规范化处理
- 校园安全隐患排查主题班会课件
- DB36-T 1406-2021 杉木人工林近自然更新造林技术规程
- 2025年无锡二院护理笔试题目及答案
评论
0/150
提交评论