JAVA实训-连连看(二)
JAVA 实训
2023-09-11 14:20:00 时间
前言
emmm 没想到这篇文章居然这么多人在看
代码是本科第一个JAVA练手的项目,后面不在更新的啦,使用的时候慎用欧
github 自取
https://github.com/leandon/JAVA-LinkGame
CSDN资源
章节汇总:
- 连连看 序言 https://ydlin.blog.csdn.net/article/details/80657460
- 连连看1 https://ydlin.blog.csdn.net/article/details/80659017
- 连连看2 https://ydlin.blog.csdn.net/article/details/80667673
- 连连看2总结 https://ydlin.blog.csdn.net/article/details/80719022
今天主要任务是双消以及做相同判断的消除
1.相比昨天MainFrame类
//我们将常量采用重构抽取出来
private static final int heigh = 800;
private static final int width = 700;
int buttonMes1=0;
int buttonMes2=0;
JButton button1=null;
JButton button2=null;
我们的监听事件发生了变化
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// button.setVisible(false);
JButton button = (JButton) e.getSource();
if(button1 == null){
//以前没点击过
button1=button;
System.out.print("START");
}else{
button2=button;
int index1=button1.getY()/button1.getHeight()*gameData.cols+button1.getX()/button1.getWidth();
int index2=button2.getY()/button2.getHeight()*gameData.rows+button2.getX()/button2.getWidth();
if(GameRule.isConnext(gameData.data, index1, index2))
{
button2=button;
button1.setVisible(false);
button2.setVisible(false);
}
button1=null;
button2=null;
}
}
- 求index1,和index2
- 其实我们主要是通过按钮的位置来算的
- 由于按钮可能不在第二行所以我们算的时候需要考虑乘以一个行数或者列数
2.书写方便
同时
为了后面的书写我们将this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
后的部分抽取 为initButton(gameData);
注:这里我们
- final GameData gameData=new GameData();
- 是因为下面的监听器我们是使用了匿名类, 匿名类如果需要访问外部常量需要定义成final
我们这里涉及到了相同相处的数据处理,新定义一个
GameRule类
package com.icss.linkgame.data;
public class GameRule {
/** 判断数组DATA中 制定的两位置之间的图形能否消除
* @param data 数据
* @param index1 第一个位置的数值
* @param index2 第二个位置的数值
* @return
*/
public static boolean isConnext(int data[],int index1,int index2)
{
if(index1 == index2)
{
System.out.print("1");
return false;
}
if(data[index1] == data[index2])
{
return true;
}
System.out.print("1");
return false;
}
}
相关文章
- MySQL_(Java)【连接池】简单在JDBCUtils.java中创建连接池
- 基础知识《五》---Java多线程的常见陷阱
- Java实现 LeetCode 811 子域名访问计数 (暴力)
- Java实现 LeetCode 554 砖墙(缝隙可以放在数组?)
- Java实现 LeetCode 209 长度最小的子数组
- Java实现 洛谷 P2089 烤鸡
- Java实现串的简单处理
- java实现Kruskal算法
- Java实现 蓝桥杯VIP 算法提高 开灯游戏
- Java实现蓝桥杯十六进制转八进制
- 【JAVA】Java 异常中e的getMessage()和toString()方法的异同
- 【JAVA】java中的length和length()
- 【JAVA】 03-Java中的异常和包的使用
- 【JAVA】 04-Java中的多线程
- Java - 反编译工具
- macos:安装java 17.0.6(android studio报错:Unable to locate a Java Runtime.)
- Java中的同步集合与并发集合有什么区别?
- 将Java应用部署到SAP云平台neo环境的两种方式
- 【java】Java 枚举(enum)如何使用以及原理
- Java递归构建树形结构
- Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释
- Java操作Redis的方式
- Java中出现“错误: 编码GBK的不可映射字符”的解决方法
- 【java】Java 重写(Override)与重载(Overload)