2016-10-15 30 views
0

在遊戲中輸出一個隨機數(loadG1)並顯示4秒。一旦四秒鐘結束,它就會消失,用戶必須輸入其值以獲得一個點。一旦用戶按下Enter鍵,他們的輸入框就會消失,程序必須等待較長的CountDownTimer(當前爲18秒)才能看到他們的分數。到目前爲止,他們只能得到一分。我想要發生的事情是,一旦他們輸入答案(無論是否正確),4秒鐘倒計時器的內容將被重複。雖然,我想loadG1在倒數計時器再次啓動時也輸出。所以他們輸入一個答案,一個新的隨機加載G1顯示另外4秒然後消失,他們輸入另一個答案等等,直到更長的計時器結束。我會如何去做這件事?我意識到,循環不起作用,因爲我試過了,它只是讓我的應用程序崩潰。如果有人能幫我做到這一點,並且告訴我如何實現代碼,我將非常感激。 注:我是學習Java和Android開發的新手。 非常感謝提前。如何以特定的方式重複這個倒數計時器...?

下面的代碼:

public class game1 extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_game1); 


final Button loseStarter1; 

    loseStarter1 = (Button) findViewById(R.id.Starter1); 
    loseStarter1.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      loseStarter1.setVisibility(View.GONE); 

      final int[] score = {0}; 
      Random generateG1 = new Random(); 
      final int loadG1 = generateG1.nextInt(1000000)+10000; 
      final TextView number = (TextView) findViewById(R.id.number); 
      number.setText(" "+loadG1); 

      new CountDownTimer(18000, 1000) { 
       @Override 
       public void onTick (long millisUntilFinished) { 
       } 
       public void onFinish() { 
        TextView result = (TextView) findViewById(R.id.outcome); 
        result.setText("Score: "+ score[0]); 
        TextView prompt = (TextView) findViewById(R.id.prompt); 
        prompt.setVisibility(View.GONE); 
       } 
      }.start(); 


        new CountDownTimer(4000, 1000) { 

         @Override 
         public void onTick(long millisUntilFinished) { 

         } 

         @Override 
         public void onFinish() { 
          number.setVisibility(View.GONE); 
          final TextView prompt = (TextView) findViewById(R.id.prompt); 
          prompt.setText(" Enter the number"); 
          final EditText input = (EditText) findViewById(R.id.enterAnswer); 
          input.setVisibility(View.VISIBLE); 
          input.setOnKeyListener(new View.OnKeyListener() { 
           @Override 
           public boolean onKey(View v, int keyCode, KeyEvent event) { 
            if (event.getAction() == KeyEvent.ACTION_DOWN) { 
             switch (keyCode) { 
              case KeyEvent.KEYCODE_ENTER: 
               Editable answer = input.getText(); 
               int finalAnswer = Integer.parseInt(String.valueOf(answer)); 
               int finalLoadG1 = Integer.parseInt(String.valueOf(loadG1)); 
               input.setVisibility(View.GONE); 
               prompt.setVisibility(View.GONE); 
               if (finalAnswer == finalLoadG1) { 
                score[0]++; 
               } 

               return true; 
              default: 
             } 
            } 
            return false; 
           } 
          }); 
         } 
        }.start(); 

      }; 
     }); 
    } 

} 
+0

你應該嘗試重新說明這個問題。很難理解你想達到什麼。 –

+0

@UdiIdan你不明白的是什麼?我閱讀它的方式似乎是有道理的。我很樂意編輯您需要的任何附加信息。 – User44

+0

如果你需要一個答案,你應該努力表達這個問題,這樣很容易理解。它應該對讀者有意義,而不是對你。祝你好運。 –

回答

0

議決

我把下面的比分[0] +後:

number.setVisibility(View.VISIBLE); 
final int loadG1 = generateG1.nextInt(1000000) + 10000; 
number.setText(" " + loadG1); 
input.getText().clear(); 

start(); 

這樣,所有必要的更改後並且定時器重新開始。我還修改了提示 TextView的可見性,以確保它僅在用戶能夠輸入答案時才顯示。花了我一段時間,但這已經解決了。