2013-04-25 135 views
0

嗨,我是新來android遊戲開發,我想問你們有關這個Android遊戲的正確邏輯流程。所以這是我的遊戲。這是一個非常簡單的遊戲,用戶必須選擇正確的顏色。遊戲有3個階段。在每個階段,它有10個問題。在每個問題中,它有一個30秒的計時器。有一個問題和選擇,當然它需要隨機化。如果用戶選擇了正確的顏色,它將進入下一個問題。但如果用戶選擇了錯誤的顏色,他/她只有3個試驗可供選擇,如果他/她到達第3次試用版,遊戲是OVER並顯示嘗試再按按鈕。安卓遊戲的邏輯流程

這裏有一段代碼,我想:

// 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; 
    } 
} 

更新:和另一件事是,我很困惑在哪裏把我的while循環這裏3項試驗。

// 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

如果您對我的答案滿意,請點擊旁邊的複選標記以接受**,以便其他訪問者知道此問題已得到解答。 – 2013-04-25 16:42:13

回答

1

你不需要把任何東西放在onTick來處理這種情況。在調用cancel()(您在點擊處理程序中執行的操作)之後,onTick()將不會再次調用。

+0

所以我必須把counter.cancel放在每個對象中? – 2013-04-25 15:16:01

+0

你必須從你想讓定時器停止的每個代碼路徑調用它。 – 2013-04-25 15:19:08

+0

好的,謝謝。所以我的另一個問題是我有點困惑。我在哪裏必須把我的while循環進行3次試驗?請檢查我FY11以上更新的職位。 – 2013-04-25 15:25:56