初学JAVA,用JAVA编写一个简单的连连看~

  • E7_991298
    了解作者
  • 30.3KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-06-14 10:46
    上传日期
源码 博文链接:https://stchou.iteye.com/blog/755055
StchouLLK.rar
  • StchouLLK
  • .project
    385B
  • src
  • llk1
  • MyTableModel.java
    937B
  • StchouLLK.java
    738B
  • llk2
  • MenuAction.java
    530B
  • RetryAction.java
    426B
  • MyTableModel.java
    6.5KB
  • StchouLLK.java
    1.7KB
  • .settings
  • org.eclipse.jdt.core.prefs
    629B
  • image
  • 9.gif
    1.6KB
  • 4.gif
    1.5KB
  • 11.gif
    1.6KB
  • 3.gif
    1.6KB
  • 6.gif
    924B
  • 2.gif
    1.6KB
  • 7.gif
    1.4KB
  • 5.gif
    1.6KB
  • 12.gif
    1.5KB
  • 10.gif
    1.6KB
  • 1.gif
    1.3KB
  • 8.gif
    1.2KB
  • .classpath
    301B
  • bin
  • llk1
  • StchouLLK.class
    1.4KB
  • MyTableModel.class
    1.7KB
  • llk2
  • StchouLLK.class
    2.4KB
  • RetryAction.class
    799B
  • MyTableModel.class
    5.8KB
  • MenuAction.class
    976B
内容介绍
package llk2; import java.awt.event.MouseEvent; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.event.TableModelListener; public class MyTableModel implements javax.swing.table.TableModel,java.awt.event.MouseListener{ private String [][] data= new String[10][8]; private int clickcount=0;//点击次数 private int k,i,j,n; private int r1,r2,c1,c2;//第一第二次点击的坐标 //填充表格中的各个数据 public void fillData(){ for (int i=0 ;i<data.length ; i++){ for(int j=0 ; j<data[0].length; j++){ //产生随机数 java.util.Random ran = new java.util.Random(); int index = ran.nextInt(11)+1; String s="image/"+index+".gif"; data[i][j]=s;//填充 } } } public int getRowCount(){ return data.length; } public int getColumnCount(){ return data[0].length; } public String getColumnName(int columnIndex){ return "第"+columnIndex+"列"; } public Class<?> getColumnClass(int columnIndex){ return javax.swing.ImageIcon.class; } public boolean isCellEditable(int rowIndex, int columnIndex){ return false; } // 显示图片 public Object getValueAt(int rowIndex, int columnIndex){ String imageFileName = data[rowIndex][columnIndex]; javax.swing.ImageIcon ic = new javax.swing.ImageIcon(imageFileName); return ic; } public void setValueAt(Object aValue, int rowIndex, int columnIndex){ } public void addTableModelListener(TableModelListener l){ } public void removeTableModelListener(TableModelListener l){ } //mouseLisener鼠标的监听器 public void mouseClicked(MouseEvent e){ } public void mousePressed(MouseEvent e){ } public void mouseReleased(MouseEvent e){//鼠标放开时使用的 //得到事件发生的事件源 Object obj = e.getSource(); javax.swing.JTable table = (javax.swing.JTable)obj;//把事件发生的源转化为表格 //得到单元格的索引 //消去表格中的数据 if(clickcount==0){//第一次点击 r1 = table.getSelectedRow(); c1 = table.getSelectedColumn(); clickcount++; }else{//第二次点击 r2 = table.getSelectedRow(); c2 = table.getSelectedColumn(); clickcount=0; //得到两次点击的内容 String v1 = data[r1][c1]; String v2 = data[r2][c2]; //作比较 if(v1.equals(v2)&&!(r1==r2&&c1==c2)){//选择的不是同一个 if(killable()){ //删除信息 data[r1][c1]=""; data[r2][c2]=""; //刷新 javax.swing.SwingUtilities.updateComponentTreeUI(table); } } } } // 判断是否可消 public boolean killable() { if (r1 == r2 && (c1 == c2 - 1 || c1 == c2 + 1) || c1 == c2 && (r1 == r2 - 1 || r1 == r2 + 1)) { return true; } else if (r1 == r2 && c1 == c2) { return false; } else { for (j = 0; j < 8; j++) { if (data[r1][j].equals("")) { // 判断第一个按钮同行哪个按钮为空 if (c2 > j) { // 如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边 for (i = c2 - 1; i >= j; i--) { // 判断第二按钮左侧直到第一按钮中间有没有按钮 if (!data[r2][i].equals("")) { k = 0; break; } else { k = 1; } // K=1说明通过了第一次验证 } if (k == 1) { linePassOne(); } } if (c2 < j) { // 如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边 for (i = c2 + 1; i <= j; i++) { // 判断第二按钮左侧直到第一按钮中间有没有按钮 if (!data[r2][i].equals("")) { k = 0; break; } else { k = 1; } } if (k == 1) { linePassOne(); } } if (c2 == j) { linePassOne(); } } if (k == 2) { if (r1 == r2) { return true; } if (r1 < r2) { for (n = r1; n <= r2 - 1; n++) { if (!data[n][j].equals("")) { k = 0; break; } if (data[n][j].equals("") && n == r2 - 1) { return true; } } } if (r1 > r2) { for (n = r1; n >= r2 + 1; n--) { if (!data[n][j].equals("")) { k = 0; break; } if (data[n][j].equals("") && n == r2 + 1) { return true; } } } } } for (i = 0; i < 10; i++) { // 列 if (data[i][c1].equals("")) { if (r2 > i) { for ( j = r2 - 1; j >= i; j--) { if (!data[j][c2].equals("")) { k = 0; break; } else { k = 1; } } if (k == 1) { rowPassOne(); } } if (r2 < i) { for (j = r2 + 1; j <= i; j++) { if (!data[j][c2].equals("")) { k = 0; break; } else { k = 1; } } if (k == 1) { rowPassOne(); } } if (r2 == i) { rowPassOne(); } } if (k == 2) { if (c1 == c2) { return true; } if (c1 < c2) { for (n = c1; n <= c2 - 1; n++) { if (!data[i][n].equals("")) { k = 0; break; } if (data[i][n].equals("") && n == c2 - 1) { return true; } } } if (c1 > c2) { for (n = c1; n >= c2 + 1; n--) { if (!data[i][n].equals("")) { k = 0; break; } if (data[i][n].equals("") && n == c2 + 1) { return true; } } } } } } return false; } public void linePassOne() { if (c1 > j) { // 第一按钮同行空按钮在左边 for (i = c1 - 1; i >= j; i--) { // 判断第一按钮同左侧空按钮之间有没按钮 if (!data[r1][i].equals("")) { k = 0; break; } else { k = 2; } // K=2说明通过了第二次验证 } } if (c1 < j) { // 第一按钮同行空按钮在与第二按钮之间 for (i = c1 + 1; i <= j; i++) { if (!data[r1][i].equals("")) { k = 0; break; } else { k = 2; } } } } public void rowPassOne() { if (r1 > i) { for (j = r1 - 1; j >= i; j--) { if (!data[j][c1].equals("")) { k = 0; break; } else { k = 2; } } } if (r1 < i) { for (j = r1 + 1; j <= i; j++) { if (!data[j][c1].equals("")) { k = 0; break; } else { k = 2; } } } } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } }
评论
    相关推荐
    • CasseBrique:https
      CasseBrique:https
    • plaintextoffenders:https
      纯文字罪犯 向报告的域的公开列表
    • 使用socket post 数据到httphttps
      使用socket post 数据到httphttps
    • nodejs http-server开启https的证书
      https证书文件,nodejs http-server开启https的证书,可以直接在本地启动https的协议,方便部署和使用。
    • http https 切换
      http https切换代码,能够实现网站在传输信息的过程中不易遭人盗取
    • Http2Https-crx插件
      将书签中的http转换为https 害怕用https书签替换旧的http书签? 随着许多网站迁移到https,旧的http书签使星标图像为空。 搜索并转换为https! ****************************************************** ***********...
    • LocomotiveCMS https to http-crx插件
      语言:English 将登录网址从https替换为http以进行开发 此扩展程序供使用机车cms开发应用程序时供个人使用。 为了易于在开发模式下使用,此扩展程序将https登录网址替换为http
    • http:https的镜像
      框架HTTP
    • CookieIsolator:分离 HTTPHTTPS cookie
      松散隔离:HTTP cookie 只能在 HTTP 通道中发送,而 HTTPS cookie 可以在 HTTP(不带安全标志)和 HTTPS 通道中发送。 严格隔离:HTTP cookie 和 HTTPS cookie 只能分别在 HTTPHTTPS 通道中发送。 Ext Secure...
    • https协议
      NULL 博文链接:https://willwen.iteye.com/blog/1988199