Java实现连连看游戏源码解析

需积分: 9 6 下载量 191 浏览量 更新于2024-09-15 收藏 7KB TXT 举报
"连连看java源代码是一款基于Java编写的桌面小游戏,允许用户直接运行进行游戏体验。这个程序的核心是实现连连看的游戏逻辑,包括棋盘布局、按钮交互以及游戏规则的判断等。" 在提供的Java代码片段中,我们可以看到以下几个关键知识点: 1. **Swing库的使用**:`javax.swing.*` 和 `java.awt.*` 是Java Swing库的导入,Swing用于构建图形用户界面(GUI),而`java.awt.event`则包含了与事件处理相关的类。在这个连连看程序中,Swing被用来创建窗口、按钮、面板和其他用户交互元素。 2. **JFrame**: `JFrame` 类代表一个顶级容器,它是Java Swing应用程序中的主窗口。在这里,`mainFrame` 是游戏的主要窗口,用以显示游戏界面。 3. **GridLayout管理器**:`GridLayout` 负责安排组件在容器中的布局,它将容器划分为相等大小的网格,并将组件放置在这些网格中。在连连看游戏中,棋盘由6行5列的按钮组成,因此`centerPanel`使用`GridLayout`来排列这些按钮。 4. **JButton数组**:`diamondsButton[][]` 是二维数组,用于存储棋盘上的按钮。每个按钮代表游戏中的一颗宝石,玩家可以通过点击这些按钮来消除匹配的对。 5. **ActionListener接口**:`implements ActionListener` 表示类会实现该接口,以处理按钮点击事件。当用户点击按钮时,对应的`actionPerformed`方法将被调用,执行相应的游戏逻辑。 6. **状态变量**:如`pressInformation`, `x0`, `y0`, `x`, `y`, `fristMsg`, `secondMsg` 和 `validateLV` 等变量,用于跟踪游戏的状态,比如当前选中的按钮位置、是否已经按下了一个按钮、验证消除条件等。 7. **事件处理方法**:尽管没有在给出的代码片段中显示,但根据连连看游戏的性质,通常会包含`actionPerformed`方法,该方法会处理用户点击按钮的事件,检查是否有匹配的宝石可以消除。 8. **初始化方法**:`init` 方法用于初始化游戏的各个组件和设置。这包括创建JFrame,添加面板,设置布局,创建按钮,以及设置初始值等。 9. **布局管理器**:除了`GridLayout`,还有`BorderLayout` 被用于组织主要窗口的各个部分,例如`centerPanel`在中间,`southPanel`在下方,`northPanel`在上方。 这个连连看游戏的Java实现,涉及到GUI编程的基本概念,事件驱动模型,以及自定义游戏逻辑的编写。为了完整运行这个游戏,还需要补充其他未展示的部分,比如事件处理逻辑、游戏规则的检查以及游戏结束条件的判断等。
2012-04-07 上传
java连连看代码 import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.*; public class Game extends JFrame{ private int num[][]; //实现数组 private JButton gamebutton[][]; //游戏Button组 private Container cont; //内容面板 private JLabel timelabel; //时间标签 private JButton play; //开始游戏按钮 private JButton exit; //退出按钮 private JButton replay; //重新开始按钮 private JButton back; //返回主界面按钮 private JComboBox choice;//游戏等级 private JButton chongle; //游戏按钮重列 private JPanel gamepanel; //游戏按钮面板 private JPanel panel; //开始游戏面板 private int time=0; //时间记录 private Time T; //记时线程 private Thread t=new Thread(T); //记时线程 private int shu=1; //记录获取游戏按钮事件的个数 private int x=0,y=0,a=0,b=0;//按钮的坐标 private JButton button1=null,button2=null;//点击了的按钮 private boolean can;//能否消除 private int lvx,lvy; //游戏等级数组标列数 private int framex,framey; //框架大小 private int again=1;//记录重列次数 public Game(){ itincomponent(); } private void itincomponent(){ //设置面板属性 if(cont!=null) cont.removeAll(); this.setSize(500, 500); this.setLocationRelativeTo(null); //获取内容面板 cont=this.getContentPane(); //开始和退出按钮 panel=new JPanel(); play=new JButton("开始游戏"); choice=new JComboBox(); choice.addItem("低级"); choice.addItem("中级"); choice.addItem("高级"); choice.setSelectedItem("低级"); exit=new JButton("退出游戏"); panel.add(choice); panel.add(play); panel.add(exit); cont.add(panel,"South"); exit.addActionListener(new Exit());//结束事件监听 play.addActionListener(new Play());//开始事件监听 this.setResizable(false); this.setVisible(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); } ////获得新的面板 private void p(){ //设置面板属性 this.setSize(framex, framey); this.setLocationRelativeTo(null); //获取内容面板 cont=this.getContentPane(); //开始和退出按钮 panel=new JPanel(); exit=new JButton("退出游戏"); replay=new JButton("重新开始"); back=new JButton("返回主界面"); chongle=new JButton("重列"); panel.add(chongle); panel.add(replay); panel.add(exit); panel.add(back); cont.add(panel,"South"); exit.addActionListener(new Exit());//结束事件监听 replay.addActionListener(new Playbutton());//重新开始事件监听 back.addActionListener(new Back());//返回主界面事件监听 chongle.addActionListener(new Chongle());//重列事件监听 //时间面板 timelabel=new JLabel("游戏时间:"+time+"s",JLabel.CENTER); cont.add(timelabel,"North"); //生成游戏操作面板 gamepanel=new JPanel(); gamepanel.setLayout(new GridLayout(lvx,lvy,3,3)); //设置为表格布局 for (int i = 0; i < lvx; i++) { for (int j = 0; j <lvy; j++) { if(gamebutton[i][j].isVisible()){ gamebutton[i][j].setIcon(new ImageIcon(num[i][j]+".jpg")); } gamepanel.add(gamebutton[i][j]); gamebutton[i][j].addActionListener(new Gamebutton()); } } cont.add(gamepanel, "Center"); this.setResizable(false); this.setVisible(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); }