2014-04-13 3 views
0

오래된 보석으로 장식 된 게임을 만들려고 시도 중입니다. 거의 모든 것이 끝났습니다. 그러나 나는 약간의 문제가있다. 이미지가 나란히있을 때, 그들은 disapper하고, 위의 사진은 내려 가고 있습니다. 그러나이 사건은 너무 빠릅니다. 이 이벤트가 발생하기 3 초 전의 JButton의 이미지를 X 이미지로하고 싶습니다.JButton 3 초 동안 이미지가 변경됩니다.

이 클래스에서 변위, 붐, 점검.

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.*; 

public class ButtonActionListener implements ActionListener { 
    public JButton previousButton = null; //previousButton is first clicked button 
    public int numP, numC; // It's Check the next button 
public static int score=0; // Create score 
public static JButton[][] buttons; // Create the buttons 
    //isBomb is check the crushing the pictures if pictures don't crush, pictures returning the old place. control check the pictures twice. 
private boolean isBomb=false , control; 
    //isPlay is pausing the game 
public static boolean isPlay=true; 

    //This method sending the button to levels 
public static void sendButton(JButton[][] j){ 
    buttons=j; 
}  

    //This method changing the pictures and check the next button 
@Override 
public void actionPerformed(ActionEvent e){ 
    if(isPlay==true){ 
    isBomb=false; 

     // currentButton is second clicked button 
    JButton currentButton = (JButton)e.getSource(); 

    if (previousButton == null) { 
     previousButton = currentButton; 
     return; 
    } 
     //Chancing the pictures and check the next button 
    int numP=Integer.parseInt(((JButton)previousButton).getActionCommand()); 
    int numC=Integer.parseInt(((JButton)currentButton).getActionCommand()); 
    if (numP==(numC+1) || numP==(numC-1) || numP==(numC+10) || numP==(numC-10)){ 
     Icon previousIcon1 = previousButton.getIcon(); 
     Icon currentIcon1 = currentButton.getIcon(); 
     Icon previousIcon = previousButton.getIcon(); 
     Icon currentIcon = currentButton.getIcon();   
     currentButton.setIcon(previousIcon); 
     previousButton.setIcon(currentIcon); 


     if(isBomb()==true){ 
      previousButton = null;    
     } 
     else{ 
      JOptionPane.showMessageDialog(null, "Bad Choice"); 
      currentButton.setIcon(currentIcon1); 
      previousButton.setIcon(previousIcon1); 
      previousButton = null; 
     } 
    } 

    else 
     previousButton=null;  
} 
} 
    //Crushing event is happening in this method 
public boolean isBomb(){ 
    do{ 
    control=false; 

     //This loop crush the horizontal buttons 
    for(int i=1; i<9; i++){ 
     for(int j=1; j<7; j++){    
      //if(j<4){ 
      String s0, s1, s2, s3 = null, s4 = null; 

       s0 = buttons[i][j].getIcon().toString(); 
       s1 = buttons[i][j+1].getIcon().toString(); 
       s2 = buttons[i][j+2].getIcon().toString(); 
       if(j < 5){ 
        s3 = buttons[i][j+3].getIcon().toString(); 
        s4 = buttons[i][j+4].getIcon().toString(); 
       } 
       for(int k=i; k>=1 ;k--){      
        if(k>1){ 
         if(s0.equals(s1) & s1.equals(s2)){ 
          if(s2.equals(s3)){ 
           if(s3.equals(s4)){ 
            buttons[k][j].setIcon(buttons[k-1][j].getIcon()); 
            buttons[k][j+1].setIcon(buttons[k-1][j+1].getIcon()); 
            buttons[k][j+2].setIcon(buttons[k-1][j+2].getIcon()); 
            buttons[k][j+3].setIcon(buttons[k-1][j+3].getIcon()); 
            buttons[k][j+4].setIcon(buttons[k-1][j+4].getIcon()); 
            score+=500;          
            refreshScore(String.valueOf(score)); 
            isBomb=true; 
            control=true; 
           } 
           buttons[k][j].setIcon(buttons[k-1][j].getIcon()); 
           buttons[k][j+1].setIcon(buttons[k-1][j+1].getIcon()); 
           buttons[k][j+2].setIcon(buttons[k-1][j+2].getIcon()); 
           buttons[k][j+3].setIcon(buttons[k-1][j+3].getIcon()); 
           score+=400;          
           refreshScore(String.valueOf(score)); 
           isBomb=true; 
           control=true; 

          } 
          buttons[k][j].setIcon(buttons[k-1][j].getIcon()); 
          buttons[k][j+1].setIcon(buttons[k-1][j+1].getIcon()); 
          buttons[k][j+2].setIcon(buttons[k-1][j+2].getIcon()); 
          score+=300;          
          refreshScore(String.valueOf(score)); 
          isBomb =true; 
          control=true; 
         }      
        } 
        //en üst satıra random resim için 
        else{ 
         if(s0.equals(s1) & s1.equals(s2)){ 
          if(s2.equals(s3)){ 
           if(s3.equals(s4)){ 
            buttons[k][j].setIcon(randomIcon.r()); 
            buttons[k][j+1].setIcon(randomIcon.r()); 
            buttons[k][j+2].setIcon(randomIcon.r()); 
            buttons[k][j+3].setIcon(randomIcon.r()); 
            buttons[k][j+4].setIcon(randomIcon.r()); 
            score+=500;          
            refreshScore(String.valueOf(score)); 
            isBomb=true; 
            control=true; 
           } 
           buttons[k][j].setIcon(randomIcon.r()); 
           buttons[k][j+1].setIcon(randomIcon.r()); 
           buttons[k][j+2].setIcon(randomIcon.r()); 
           buttons[k][j+3].setIcon(randomIcon.r()); 
           score+=400;          
           refreshScore(String.valueOf(score)); 
           isBomb=true; 
           control=true; 
          } 
          buttons[k][j].setIcon(randomIcon.r()); 
          buttons[k][j+1].setIcon(randomIcon.r()); 
          buttons[k][j+2].setIcon(randomIcon.r()); 
          score+=300;          
          refreshScore(String.valueOf(score)); 
          isBomb=true; 
          control=true;      
        }       
       } 
      }   

     } 

    } 
     //This loop crush vertical buttons 
    for(int i=1; i<7; i++){ 
     for(int j=1; j<9; j++){ 

      String s0, s1, s2, s3=null, s4=null; 

       s0 = buttons[i][j].getIcon().toString(); 
       s1 = buttons[i+1][j].getIcon().toString(); 
       s2 = buttons[i+2][j].getIcon().toString(); 
       if(i<5){ 
        s3 = buttons[i+3][j].getIcon().toString(); 
        s4 = buttons[i+4][j].getIcon().toString(); 
       } 


      for(int k=i; k>=1 ;k--){ 

       if(k == 1){ 


        if(s0.equals(s1) & s1.equals(s2)){ 
         if(s2.equals(s3)){ 
          if(s3.equals(s4)){ 
           buttons[k][j].setIcon(randomIcon.r()); 
           buttons[k+1][j].setIcon(randomIcon.r()); 
           buttons[k+2][j].setIcon(randomIcon.r()); 
           buttons[k+3][j].setIcon(randomIcon.r()); 
           buttons[k+4][j].setIcon(randomIcon.r()); 
           score+=500;          
           refreshScore(String.valueOf(score)); 
           isBomb=true; 
           control=true; 
          } 
          buttons[k][j].setIcon(randomIcon.r()); 
          buttons[k+1][j].setIcon(randomIcon.r()); 
          buttons[k+2][j].setIcon(randomIcon.r()); 
          buttons[k+3][j].setIcon(randomIcon.r()); 
          score+=400;          
          refreshScore(String.valueOf(score)); 
          isBomb=true; 
          control=true; 
         } 
         buttons[k][j].setIcon(randomIcon.r()); 
         buttons[k+1][j].setIcon(randomIcon.r()); 
         buttons[k+2][j].setIcon(randomIcon.r()); 
         score+=300;          
         refreshScore(String.valueOf(score)); 
         isBomb=true; 
         control=true; 
        }  
       } 
       if(k == 2){ 

        if(s0.equals(s1) & s1.equals(s2)){ 
         if(s2.equals(s3)){ 
          if(s3.equals(s4)){ 
           buttons[k][j].setIcon(randomIcon.r()); 
           buttons[k+1][j].setIcon(randomIcon.r()); 
           buttons[k+2][j].setIcon(randomIcon.r()); 
           buttons[k+3][j].setIcon(randomIcon.r()); 
           buttons[k+4][j].setIcon(buttons[k-1][j].getIcon()); 
           score+=500;          
           refreshScore(String.valueOf(score)); 
           isBomb=true; 
           control=true; 
          } 
          buttons[k][j].setIcon(randomIcon.r()); 
          buttons[k+1][j].setIcon(randomIcon.r()); 
          buttons[k+2][j].setIcon(randomIcon.r()); 
          buttons[k+3][j].setIcon(buttons[k-1][j].getIcon()); 
          score+=400;          
          refreshScore(String.valueOf(score)); 
          isBomb=true; 
          control=true; 
         } 
         buttons[k][j].setIcon(randomIcon.r()); 
         buttons[k+1][j].setIcon(randomIcon.r()); 
         buttons[k+2][j].setIcon(buttons[k-1][j].getIcon()); 
         score+=300;          
         refreshScore(String.valueOf(score)); 
         isBomb=true; 
         control=true; 
        }  
       } 
       if(k == 3){ 

        if(s0.equals(s1) & s1.equals(s2)){ 
         if(s2.equals(s3)){ 
          if(s3.equals(s4)){ 
           buttons[k][j].setIcon(randomIcon.r()); 
           buttons[k+1][j].setIcon(randomIcon.r()); 
           buttons[k+2][j].setIcon(randomIcon.r()); 
           buttons[k+3][j].setIcon(buttons[k-2][j].getIcon()); 
           buttons[k+4][j].setIcon(buttons[k-1][j].getIcon()); 
           score+=500;          
           refreshScore(String.valueOf(score)); 
           isBomb=true; 
           control=true; 
          } 
          buttons[k][j].setIcon(randomIcon.r()); 
          buttons[k+1][j].setIcon(randomIcon.r()); 
          buttons[k+2][j].setIcon(buttons[k-2][j].getIcon()); 
          buttons[k+3][j].setIcon(buttons[k-1][j].getIcon()); 
          score+=400;          
          refreshScore(String.valueOf(score)); 
          isBomb=true; 
          control=true; 
         } 
         buttons[k][j].setIcon(randomIcon.r()); 
         buttons[k+1][j].setIcon(buttons[k-2][j].getIcon()); 
         buttons[k+2][j].setIcon(buttons[k-1][j].getIcon()); 
         score+=300;          
         refreshScore(String.valueOf(score)); 
         isBomb=true; 
         control=true; 
        } 
       } 
       if(k == 4){ 

        if(s0.equals(s1) & s1.equals(s2)){ 
         if(s2.equals(s3)){ 
          if(s3.equals(s4)){ 
           buttons[k][j].setIcon(randomIcon.r()); 
           buttons[k+1][j].setIcon(randomIcon.r()); 
           buttons[k+2][j].setIcon(buttons[k-3][j].getIcon()); 
           buttons[k+3][j].setIcon(buttons[k-2][j].getIcon()); 
           score+=400;          
           refreshScore(String.valueOf(score)); 
           isBomb=true; 
           control=true; 
          } 
          buttons[k][j].setIcon(randomIcon.r()); 
          buttons[k+1][j].setIcon(buttons[k-3][j].getIcon()); 
          buttons[k+2][j].setIcon(buttons[k-2][j].getIcon()); 
          buttons[k+3][j].setIcon(buttons[k-1][j].getIcon()); 
          score+=400;          
          refreshScore(String.valueOf(score)); 
          isBomb=true; 
          control=true; 
         } 
         buttons[k][j].setIcon(buttons[k-3][j].getIcon()); 
         buttons[k+1][j].setIcon(buttons[k-2][j].getIcon()); 
         buttons[k+2][j].setIcon(buttons[k-1][j].getIcon()); 
         score+=300;          
         refreshScore(String.valueOf(score)); 
         isBomb=true; 
         control=true; 
        } 
       } 
       if(k == 5){ 

        if(s0.equals(s1) & s1.equals(s2)){ 
         if(s2.equals(s3)){ 
          buttons[k][j].setIcon(buttons[k-4][j].getIcon()); 
          buttons[k+1][j].setIcon(buttons[k-3][j].getIcon()); 
          buttons[k+2][j].setIcon(buttons[k-2][j].getIcon()); 
          buttons[k+3][j].setIcon(buttons[k-1][j].getIcon()); 
          score+=400;          
          refreshScore(String.valueOf(score)); 
          isBomb=true; 
          control=true; 
         } 
         buttons[k][j].setIcon(buttons[k-3][j].getIcon()); 
         buttons[k+1][j].setIcon(buttons[k-2][j].getIcon()); 
         buttons[k+2][j].setIcon(buttons[k-1][j].getIcon()); 
         score+=300;          
         refreshScore(String.valueOf(score)); 
         isBomb=true; 
         control=true; 
        } 
       } 
       if(k == 6){ 
        if(s0.equals(s1) & s1.equals(s2)){ 
         buttons[k][j].setIcon(buttons[k-3][j].getIcon()); 
         buttons[k+1][j].setIcon(buttons[k-2][j].getIcon()); 
         buttons[k+2][j].setIcon(buttons[k-1][j].getIcon()); 
         score+=300;          
         refreshScore(String.valueOf(score)); 
         isBomb=true; 
         control=true; 
        } 
       } 
      } 
     }  
    } 



}while(control==true); 

    return isBomb; 
} 

    //This method send the score to levels 
public static void refreshScore(String score){ 
    if(randomIcon.LevelName.equals("Level1")) 
     Level1.scoreTable.setText(score); 
    if(randomIcon.LevelName.equals("Level2")) 
     Level2.scoreTable.setText(score); 
    if(randomIcon.LevelName.equals("Level3")) 
     Level3.scoreTable.setText(score); 
    if(randomIcon.LevelName.equals("Level4")) 
     Level4.scoreTable.setText(score); 
    if(randomIcon.LevelName.equals("Level5")) 
     Level5.scoreTable.setText(score); 
    if(randomIcon.LevelName.equals("Level6")) 
     Level6.scoreTable.setText(score); 

} 
} 
+0

정확하게 원하는 것을 다시 말하고 문제가있는 정확한 코드 줄을 강조 표시하거나 설명해주십시오. – CodeCamper

답변

0

ImageIcon[3]javax.swing.Timer 어레이를 사용한다.

  ImageIcon m[]; 
     Timer timer; 
     int i=0; 
     m = new ImageIcon[3]; 
     m[0] = new ImageIcon("m.jpg"); 
     m[1] = new ImageIcon("m1.jpg"); 
     m[2] = new ImageIcon("m2.jpg"); 
     JButton b=new JButton(); 
     timer=new Timer(300,new ActionListener(){  //Here The Icon is Changed every 3 min . 
    public void actionPerformed(ActionEvent e) 
    { 
     if(i<3) 
     { 
      b.setIcon(m[i]); 
      i=i+1; 
     } 
     else 
     { 
     i=0; 
     b.setIcon(m[i]); 
     } 
    } 
    }); 
    timer.start(); 
관련 문제