2016-10-15 65 views
-1

在這個遊戲中,用戶每輸入一個等於產生的隨機數的整數(稱爲'LoadG1'的變量),他們就得分。如果他們的輸入== loadG1,他們會得到一個添加到'score'變量的點。每次他們回答正確時,應該增加1分,但由於某種原因,他們的得分不會超過1分。如果有一個問題是正確的,他們會得到一個顯示在最後的點。任何更正確的答案都會被忽略。在倒數計時器中得分不會更新

下面的代碼:

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


    final CountDownTimer loop = 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.setVisibility(View.VISIBLE); 
     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]++; 
          } 

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

          start(); 

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

    new CountDownTimer(24000, 1000) { 
    @Override 
    public void onTick (long millisUntilFinished) { 
    } 
    @Override 
    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); 
     final EditText input = (EditText) findViewById(R.id.enterAnswer); 
     input.setVisibility(View.GONE); 
     loop.cancel(); 
    } 
}.start(); 

得分變量聲明之前任一計時器,則點在短4秒計時器溶液,並在較長的定時器的結束打印。全部顯示在上面的代碼中。

如果有人能夠幫助我確保每次輸入正確答案時都更新分數計數器,請提前致謝,我將不勝感激。

+0

爲什麼所有yor變量都是'final'? – Kacper

+0

@Kacper IDE需要它們中的很多才能讓我的程序成功編譯。 – User44

+0

可能的重複[如何以特定的方式重複這個倒數計時器...?](http://stackoverflow.com/questions/40057754/how-can-i-repeat-this-countdown-timer-in-特定方式) – Selvin

回答

0

在分數定義之前刪除final修飾符,我相信這會有所幫助。

+0

恐怕我不能那樣做。如果您檢查我的代碼,您會看到分數變量用於兩個不同的倒數計時器。沒有它是最終的,我不能以這種方式使用它。 – User44

+0

但最後意味着您只能修改一次變量。這就是爲什麼它從未更多。 – Kacper

+0

我知道,但刪除最終會使我的情況複雜化,因爲我不能以不同的方法調用變量(或者我的情況是倒數計時器)。 – User44