拼图游戏java(三)实现鼠标点击图片上下左右移动

思路:

1.使类实现MouseLisner接口,创建未重写的方法,主要重写MousePressed方法

2.在按钮上添加鼠标监听

3.在方法中实现业务逻辑

 

 

1

public class GamePanel extends JPanel implements MouseListener

还需继承JPanel类

2.

for(int i = 0;i             btns[i] = new JButton(icons[order[i]]);//创建按钮时指定图片
            btns[i].addMouseListener(this);//在按钮上添加鼠标监听  this表示当前对象  用当前对象监听器 
            add(btns[i]);

        }

3.

思路

1.获取鼠标点击的具体按钮

2.根据按钮的位置及空白图片按钮的位置确定是否可以移动

3.判断是否拼图成功

    public void mousePressed(MouseEvent e) {
                //1.得到单击按钮的下标值k
                int k = 0;//赋值0是为了能过语法检查,实际上在运行中k的值肯定会被覆盖
                for(int i = 0;i                     if(e.getSource()==btns[i]){
                        k=i;
                        break;//得到值后立马跳出
                    }
                }
//                System.out.println("单击按钮下标"+k);
                //2.检测移动方向并处理
                //btns[k-n]是btns[k]的上一行按钮
                if(k>=n&&btns[k-n].getIcon()==null){//能够向上
                    btns[k-n].setIcon(btns[k].getIcon());
                    btns[k].setIcon(null);            
                }else if(k                     btns[k+n].setIcon(btns[k].getIcon());
                    btns[k].setIcon(null);
                }else if(k%n!=n-1&&btns[k+1].getIcon()==null){//向右
                    btns[k+1].setIcon(btns[k].getIcon());
                    btns[k].setIcon(null);
                }else if(k%n!=0&&btns[k-1].getIcon()==null){//左
                    btns[k-1].setIcon(btns[k].getIcon());
                    btns[k].setIcon(null);
                }
                //3.判断是否成功
                if(isSuccess()){
                    JOptionPane.showMessageDialog(null, "success!");//弹出
                    
                }
        
    }

    private boolean isSuccess() {
        boolean flag=true;
        for(int i = 0;i             if(btns[i].getIcon()!=icons[i]){//若发现图片顺序未对应
                flag=false;
                break;
            }
        }
        return flag;
        
        
    }

 

 

你可能感兴趣的:(小游戏)