2016-10-15 5 views
0

ゲームで乱数(loadG1)が出力され、4秒間表示されます。 4秒が経過すると、それは消え、ユーザーはポイントを得るためにその値を入力する必要があります。ユーザがenterを押すと、入力ボックスは消え、プログラムはより長いCountDownTimer(現在18秒)が終了してスコアを見るまで待たなければなりません。これまでのところ、1点しか得点できません。私が起こりたいのは、4秒のカウントダウンタイムマーの内容が答えを入力した後に繰り返されることです(正解であろうとなかろうと)。しかし、カウントダウンタイマーが再び始動するときにloadG1も出力させたいです。そこで、彼らは答えを入力し、新しいランダムなloadG1が4秒間表示され、消えて、別の答えを入力するなど、長いタイマーが終了するまで続きます。これをどうやってやりますか?私はループが動作しないことを知っている、私が試したように、それはちょうど私のアプリをクラッシュした。誰かが私の手助けをしてコードを実装する方法を教えてくれれば、とても感謝しています。 注:私はJavaとAndroidの開発者を習得しています。 事前に感謝します。スコアが[0] ++後どのようにこのカウントダウンタイマーを特定の方法で繰り返すことができますか?

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

@ウディイダン何を理解していないのですか?私がそれを読んでいるように、それは理にかなっているようです。あなたが必要とする追加情報を喜んで編集したいと思います。 – User44

+0

答えが必要な場合は、理解しやすいように質問を表現する努力をする必要があります。それは読者の方ではなく、読者にとって理にかなっているはずです。がんばろう。 –

答えて

0

を解決し、私は次のように置く:

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

start(); 

この方法で、すべての必要な変更が行われた。ここ

コードですタイマーが新たに始まる。 プロンプト TextViewの表示を変更して、ユーザーが回答を入力できるときにのみ表示されるようにしました。私はしばらくかかりましたが、これは解決されました。

関連する問題