1、1) init()方法:实现游戏主界面;2) randomBuild()方法:用来产生游戏按钮上的随机数;3) fraction()方法:游戏界面最上面用来加分;4) reload()方法:用来刷新,重载,窗体界面;5) estimateEven()方法:判断按钮数字是否满足消去的条件 linePassOne()方法:判断第一按钮同左右侧空按钮之间rowPassOne()方法:判断第一按钮同列空按钮与第二按钮;6) actionPerformed(ActionEvent e)方法:用来实现重来一局按钮的响应事件;7) main(String args)方法:主函数;8) xiao()方法:消去
2、方法(三):界面要求:用图形界面实现,参考下系统流程图如下(四):代码设计package 数字版;/*本游戏是连连看,上面出现的都是数字,点击两个相邻的或者之间没有第三个的,便可以消去。如果不能消除完,便可以按重列,这样会把剩余的重新排列。便可以继续玩了,或者您可以按重置,重新再来一局!*/import javax.swing.*; /调用图形界面类布局import java.awt.*; import java.awt.event.*;public class lianliankan implements ActionListener /继承一个监听器JFrame mainFrame; /游
3、戏主面板 用布局管理器Container thisContainer; /一个容器JPanel centerPanel,southPanel,northPanel; /子面板 JButton diamondsButton = new JButton65;/游戏按钮数组 JButton exitButton,resetButton,newlyButton; /退出,重列,重新开始按钮 JLabel fractionLable=new JLabel(0); /分数标签 显示您玩游戏得了多少分!)JButton firstButton,secondButton; /分别记录两次被选中的按钮 int
4、grid = new int87;/储存游戏按钮位置 static boolean pressInformation=false; /判断是否有按钮被选中 int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; /游戏按钮的位置坐标 int i,j,k,n;/消除方法控制 public void init() mainFrame=new JFrame(数字版连连看thisContainer = mainFrame.getContentPane();thisContainer.setLayout(new BorderLayout();/s
5、etLayout()设置用户界面上的屏幕组件的格式布局,是java图形界面编程的常用方法。此处是方位布局centerPanel=new JPanel(); /中间部分(用来放游戏显示内容)southPanel=new JPanel(); /下面部分(用来放退出,重列,重新开始按钮)northPanel=new JPanel(); /上面部分(用来记录得分情况)centerPanel.setBackground(new Color(145,145,44);/灰色northPanel.setBackground(new Color(245,252,252);/颜色redthisContainer.
6、add(centerPanel,CenterthisContainer.add(southPanel,SouththisContainer.add(northPanel,NorthcenterPanel.setLayout(new GridLayout(6,5); /设置游戏图标for(int cols = 0;cols 6;cols+) for(int rows = 0;rows 5;rows+ ) diamondsButtoncolsrows=new JButton(String.valueOf(gridcols+1rows+1); /换下一行diamondsButtoncolsrows.
7、setBackground(new Color(199,190,33);/颜色diamondsButtoncolsrows.setFont(new java.awt.Font(黑体, 1, 22);diamondsButtoncolsrows.setBorder(BorderFactory.createLoweredBevelBorder();diamondsButtoncolsrows.addActionListener(this);centerPanel.add(diamondsButtoncolsrows); exitButton=new JButton(退出exitButton.set
8、Font(new java.awt.Font(, 1, 16);exitButton.setPreferredSize(new Dimension(55,30);exitButton.setBorder(BorderFactory.createRaisedBevelBorder();exitButton.setBackground(new Color(25,155,100);/颜色绿色exitButton.addActionListener(this);resetButton=new JButton(刷新resetButton.setFont(new java.awt.Font(resetBu
9、tton.setPreferredSize(new Dimension(55,30);resetButton.setBorder(BorderFactory.createRaisedBevelBorder();resetButton.setBackground(new Color(77, 175,100);/蓝色resetButton.addActionListener(this);newlyButton=new JButton(再来一局newlyButton.setFont(new java.awt.Font(newlyButton.setPreferredSize(new Dimensio
10、n(100,33);newlyButton.setBorder(BorderFactory.createRaisedBevelBorder();newlyButton.setBackground(new Color(255,192,203);/粉色newlyButton.addActionListener(this); /添加了监听器 !当点击时候,用那个来通知southPanel.add(exitButton);southPanel.add(resetButton);southPanel.add(newlyButton);fractionLable.setText(String.valueO
11、f(Integer.parseInt(fractionLable.getText();/用来计算得分数,不断变化northPanel.add(fractionLable);mainFrame.setBounds(300,100,500,450);mainFrame.setVisible(true);public void randomBuild() /产生随机数int randoms,cols,rows;for(int twins=1;twins=15;twins+) randoms=(int)(Math.random()*25+1);for(int alike=1;alike=2;alike
12、+) cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);while(gridcolsrows!=0) this.gridcolsrows=randoms;public void fraction() fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText()+100);public void reload() int save = new int30;int n=0,cols,rows;int grid= new int87; /
13、双重循环,输出二维数组!for(int i=0;i=6;i+) for(int j=0;jthis.gridcolsrows=saven;n-;mainFrame.setVisible(false);pressInformation=false; /这里一定要将按钮点击信息归为初始 init();for(int i = 0;i i+) for(int j = 0;j j) /如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边 for (i=y-1;i=j;i- ) /判断第二按钮左侧直到第一按钮中间有没有按钮 if (gridxi!k=0;break;else k=1; /K=
14、1说明通过了第一次验证 if (k=1) linePassOne();if (yj) /如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边 for (i=y+1;=j ;i+ ) /判断第二按钮左侧直到第一按钮中间有没有按钮 =0) else k=1; if (k=1) if (y=j ) if (k=2) if (x0=x) if (x0x) for (n=x0;nn=x+1 ;n- ) n=x+1) for (i=0;8;i+ ) /列 if (gridiy0=0) if (xi) for (j=x-1;j=i ;j- ) if (gridjy!rowPassOne();i
15、f (xfor (j=x+1;=i;if (x=i) if (k=2) if (y0=y) if (y0=y+1 ;n-) n=y+1) public void linePassOne() j) /第一按钮同行空按钮在左边 for (i=y0-1;i- ) /判断第一按钮同左侧空按钮之间有没按钮 if (gridx0i!else k=2; /K=2说明通过了第二次验证 j) /第一按钮同行空按钮在与第二按钮之间 for (i=y0+1;else k=2;public void rowPassOne() for (j=x0-1;if (gridjy0!for (j=x0+1;public voi
16、d remove() firstButton.setVisible(false);secondButton.setVisible(false);fraction();gridx0y0=0;gridxy=0;public void actionPerformed(ActionEvent e) if(e.getSource()=newlyButton) this.grid = grid;randomBuild();if(e.getSource()=exitButton) System.exit(0);if(e.getSource()=resetButton) reload();if(e.getSo
17、urce()=diamondsButtoncolsrows) estimateEven(cols+1,rows+1,diamondsButtoncolsrows);public static void main(String args) /主方法lianliankan llk = new lianliankan(); /实例化llk.randomBuild(); /调用llk.init();关节点:a. Java的接口技术b. Java的事件处理机制c. Java的布局管理 (四):总结通过java这次实训学习,我从中学到了许多新的知识,而且通过这次实训设计,培养了我从多门课程中获取知识、迅速规划并开发出目标系统的能力,也锻炼了我们团队合作协调的能力,以及编程能力也有了很大的提高。另外也有许多心得体会,在系统开发过程真的很艰难,也非常辛苦,特别是其中不得不做一些功能性甚至系统结构性方面的变动,将面对许多重复枯燥性的工作。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1