2013-04-13 5 views
0

sqlite 데이터베이스의 일부 용어와 함께 8 쌍의 버튼 (총 16 개)이 있습니다. 사용자가 8 쌍 (맞거나 틀린, 중요하지 않음)을 연결하여 게임을 끝내고 끝에 팝업이 필요한 경우가 필요합니다. 내 코드에 < 카운터 7을 배치하면 8 쌍이 연결되어 일부 버튼 (17 클릭)을 한 번 더 클릭해야합니다. < 6 번 카운터에 입력하면 7 쌍이 한 번 더 클릭 한 후 (15 번 클릭) 팝업이 나타납니다. 나는 그 논리를 얻지 못한다. 그래서 여기에 코드입니다 :카운터가 올바르게 계산되지 않습니다.

final OnClickListener clickListener = new OnClickListener() { 

     private Button buttonClicked; 

     public void onClick(View v) { 
      if (counter < 7) { 
       Button button = (Button) v; 
       button.getBackground() 
         .setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x003333)); 

       if (buttonClicked == null) { 
        // first button is clicked 
        buttonClicked = button; 

        // only do stuff if buttons are in different layouts 
       } else { 
        if (!button.getParent().equals(buttonClicked.getParent())) { 
         // second button is clicked 

         if (buttonClicked.getTag().equals(button.getTag())) { 

          // second button is clicked and same tag but different button 

          Toast.makeText(Spojnice.this, "Correct", Toast.LENGTH_SHORT).show(); 
          button.getBackground() 
            .setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x66FF33)); 
          buttonClicked.getBackground().setColorFilter(
           new LightingColorFilter(0xFFFFFFFF, 0x66FF33)); 
          buttonClicked.setEnabled(false); 
          button.setEnabled(false); 
          buttonClicked = null; 
          score.setText("Poeni: " + brojPoenaSpojnice); 
          counter++; 
         } else { 
          counter++; 
          //reset LightingColorFilter first 
          button.setEnabled(false); 
          Toast.makeText(Spojnice.this, "Wrong", Toast.LENGTH_SHORT).show(); 
          buttonClicked = null; 

         } 

        } else { 
         //same button clicked show message or un toggle? 

         buttonClicked = button; 
        } 
       } 
      } else { 
       Intent i = new Intent(Spojnice.this, Popup_spojnice.class); 
       startActivity(i); 
       mHandler.postDelayed(mLaunchTask, 6500); 
      } 
     } 

    }; 
+0

무엇이 카운터를 초기화 했습니까? –

+0

개인 int 카운터 = 0; – marjanbaz

답변

1

먼저 검사는 카운터, 그냥 다음 카운터가 될 것이다 7 쌍을 연결 한 후, 그것을 증가 때문에 6 (여전히 < 7). 다음 번에 카운터를 증가 시키면 7이되고 첫 번째 조건은 false가되지만 다음 라운드에서만 다시 확인됩니다.

해결하려면 이후 카운터가 증가하지 않고 조건 (if (counter < 7)) 을 확인해야합니다.

+0

감사합니다. [이것을 확인할 수 있습니까?] (http://stackoverflow.com/questions/15960315/how-to-clear-color-of-a-button),이 클래스와 관련이 있습니까? – marjanbaz

관련 문제