2013-04-25 2 views
0

안녕하세요, 저는 안드로이드 게임 개발을 처음 접했습니다.이 안드로이드 게임에 대한 정확한 논리 흐름에 대해 묻고 싶습니다. 여기 제 게임이 있습니다. 사용자가 올바른 색상을 선택해야하는 매우 단순한 게임입니다. 게임은 3 단계가 있습니다. 각 단계마다 10 개의 질문이 있습니다. 각 질문마다 30 초 타이머가 있습니다. 물론 질문과 선택으로 무작위 추출이 필요합니다. 사용자가 올바른 색상을 선택하면 다음 질문으로 진행합니다. 그러나 사용자가 잘못된 색상을 선택하면 선택할 수있는 3 가지 시도가 있습니다. 3 차 예선에 도달하면 OVER이 표시되고 TRY AGAIN 버튼이 표시됩니다. 여기 안드로이드 게임을위한 논리 흐름

내가 노력 코드 조각입니다 :

// I created a custom countdown timer c/o Say 
    counter = new MyCount(30000,1000); 
    counter.start(); 
    // Call for correct object 
    getCorrectObject(); 


    @Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch(v.getId()){ 
    case R.id.pause: 
     if(mLastResourceId == R.drawable.pause){ 
      pause.setImageResource(R.drawable.resume); 
      mLastResourceId = R.drawable.resume; 
      counter.cancel(); 
     } else if (mLastResourceId == R.drawable.resume) { 
      pause.setImageResource(R.drawable.pause); 
      mLastResourceId = R.drawable.pause; 
      counter = new MyCount(s1,1000); 
      counter.start(); 
     } 
     break; 
    } 

public class MyCount extends CountDownTimer 
{ 
    public MyCount(long millisInFuture, long countDownInterval) 
    { 
     super(millisInFuture, countDownInterval); 
    } 
    @Override  
    public void onFinish() 
    { 
     Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
     startActivity(i); 
    } 

    TextView tx = (TextView) findViewById(R.id.timer); 
    @Override  
    public void onTick(long millisUntilFinished) 
    { 
     s1 = millisUntilFinished; 
     tx.setText("" + millisUntilFinished/1000); 
    } 
} 

또한 나는 무엇 고려하고있다, 사용자는 내가 강제로 onTick 방법에 넣어해야하는지 종료 타이머없이 정답을 선택하는 경우 끝내기 타이머? 그리고 내가 직면하는 까다로운 부분 중 하나는 선택이나 대상의 무작위 화입니다.

private void getCorrectObject() { 
    // TODO Auto-generated method stub 

    List<Integer> objects = new ArrayList<Integer>(); 
    objects.add(1); 
    objects.add(2); 
    objects.add(3); 
    objects.add(4); 
    objects.add(5); 
    objects.add(6); 
    objects.add(7); 

    Collections.shuffle(objects); 
    int correctObject = objects.get(0); 
    Log.d("test", String.valueOf(correctObject)); 

    switch(correctObject) 
    { 
    case 1: 
     bObjectCorrect.setImageResource(R.drawable.tree1); 
     bObjectCorrect.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_1.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    case 2: 
     bObject1.setImageResource(R.drawable.tree1); 
     bObject1.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_1.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    case 3: 
     bObject2.setImageResource(R.drawable.tree1); 
     bObject2.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_1.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    case 4: 
     bObject3.setImageResource(R.drawable.tree1); 
     bObject3.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_1.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    case 5: 
     bObject4.setImageResource(R.drawable.tree1); 
     bObject4.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_1.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    case 6: 
     bObject5.setImageResource(R.drawable.tree1); 
     bObject5.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_1.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    case 7: 
     bObject6.setImageResource(R.drawable.tree1); 
     bObject6.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_1.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    } 
} 

업데이트 : :와 다른 점은 나는 3 개 시험 여기에 내 while 루프를 넣어 위치를 혼란 스러워요, 여기

는 지금까지 시도했다이기도합니다.

// I will put 3 trials logic here 
    while(trial <= 3){ 
    trial++; 

switch(correctObject) 
    { 
    case 1: 
     bObjectCorrect.setImageResource(R.drawable.stage1_1_object1); 
     bObjectCorrect.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_2.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    case 2: 
     bObject1.setImageResource(R.drawable.stage1_1_object1); 
     bObject1.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_2.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    case 3: 
     bObject2.setImageResource(R.drawable.stage1_1_object1); 
     bObject2.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_2.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    case 4: 
     bObject3.setImageResource(R.drawable.stage1_1_object1); 
     bObject3.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_2.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    case 5: 
     bObject4.setImageResource(R.drawable.stage1_1_object1); 
     bObject4.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_2.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    case 6: 
     bObject5.setImageResource(R.drawable.stage1_1_object1); 
     bObject5.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_2.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    case 7: 
     bObject6.setImageResource(R.drawable.stage1_1_object1); 
     bObject6.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_2.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    case 8: 
     bObject7.setImageResource(R.drawable.stage1_1_object1); 
     bObject7.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_2.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    case 9: 
     bObject8.setImageResource(R.drawable.stage1_1_object1); 
     bObject8.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(getApplicationContext(), Stage1_2.class); 
       startActivity(i); 
       new Thread(){ 
        public void run(){ 
         MediaPlayer mp = MediaPlayer.create(Stage1_2.this, R.raw.brown); 
         mp.start(); 
        } 
       }.start(); 
       finish(); 
      } 
     }); 
     break; 
    } // Last of switch statement 

    if(trial == 3){ 
     new AlertDialog.Builder(this) 
     .setTitle("Game Over") 
     .setMessage("Sorry you reached your 3rd trial") 
     .setPositiveButton("Try Again?", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       Intent i = new Intent(Stage1_2.this, Stage1_1.class); 
       startActivity(i); 
      } 
     }) 
     .setNegativeButton("Back to Menu", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       Intent i = new Intent(Stage1_2.this, ShapingColors.class); 
       startActivity(i); 
      } 
     }) 
     .show(); 
    } 

    } // Last of while loop 

나는 정말로 당신의 제안을 듣고 싶습니다. 당신의 도움은 진심으로 감사드립니다. 미리 감사드립니다!

+0

내 대답에 만족하는 경우 옆에있는 체크 표시를 클릭하여 ** 수락 **합니다. 따라서 다른 방문자가이 질문에 답변 한 것을 알고 있습니다. –

답변

1

이 경우에는 onTick에 아무것도 넣지 않아도됩니다. 클릭 핸들러에서 수행하는 cancel()을 호출하면 onTick()이 다시 호출되지 않습니다.

+0

그래서 모든 객체에 counter.cancel을 넣어야합니까? –

+0

타이머를 멈추고 자하는 각 코드 경로에서 호출해야합니다. –

+0

감사합니다. 그래서 제 질문은 제가 다소 혼란 스럽습니다. 3 회 재판을 위해 while 회 돌이를 넣어야합니까? FYI 위의 업데이트 된 게시물을 확인하십시오. –

관련 문제