2013-04-05 62 views
0

我有一個遊戲,並開始int值分= 100;並且每次點擊一個按鈕後遊戲進度會降低,直到遊戲結束。我使用開關在onClick方法中扣除了點數。遊戲結束後,我再次加載遊戲方法進行第二輪,這是我的問題。如果我將這個int變量作爲一個實例變量,它將在第一輪結束後保留​​它的值,並且我需要從100開始重新計算。如果我將它聲明爲局部變量,那麼我的方法使用intent調用另一個活動併發送最終點值沒有看到這個變量。如何解決這個問題?如何聲明int變量對我的所有方法都可見?

因此,我宣佈了一些變量:

int numberPointsGame = 100; 
static int numberPointsTotal; 

現在,在我的onClick方法我設置一些文字和副軌道的點:

public void onClick(View v) { 

     switch(v.getId()){ 

     case R.id.bA1: 
      numberPointsGame = numberPointsGame - 5; 
      a1.setText(mA1); 
      break; 
     case R.id.bA2: 
      numberPointsGame = numberPointsGame - 5; 
      a2.setText(mA2); 
      break; 

而現在,如果用戶輸入正確的答案,我將這些點放在另一個實例變量中,然後將其發送到另一個彈出式活動,然後重新加載第一個活動並再次執行一次。

if (ukucanRezultatStrK.equals(konacanNormalized)){ 
                 konacnoResenje.setText(mKonacno); 


                 Intent i = new Intent(Asocijacije.this, Popup_asocijacije.class); 
                 i.putExtra("brojPoenaPrimljeno", numberPointsGame); 
                 startActivity(i); 

                 mHandler.postDelayed(mLaunchTask,3700); 

                 numberPointsTotal = numberPointsTotal + numberPointsGame; 

                 setResults(); 


               }else{ 
                Toast.makeText(Asocijacije.this, "Wrong answer!", Toast.LENGTH_SHORT).show(); 
                } 

其次重裝後,當比賽結束,我去主菜單,設定最終結果(共兩場比賽的結果)的按鈕。我總是得到0.這是主要問題。

Intent i = new Intent(getApplicationContext(), Izbor.class); 
       i.putExtra("numberPointsGame", numberPointsTotal); 
       startActivity(i); 

和我的主菜單類:

int numberPointsGame; 
    int score = 0; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);  

     setContentView(R.layout.izbor); 

     addListenerOnButton(); 

     Bundle extras = getIntent().getExtras(); 
     if(extras !=null) { 
      score = extras.getInt("ukupnoAsocijacije", 0); 
     } 
    } 

private void addListenerOnButton() { 

poeniAso.setText("" + score); 

} 
+0

請顯示相關代碼。 – 2013-04-05 13:56:39

+0

當遊戲重新加載時,爲什麼不影響100到你的變量? – VinceFR 2013-04-05 13:56:50

+0

將其設置回100有什麼問題? – Simon 2013-04-05 13:56:58

回答

1

我重裝遊戲方法,一旦更多...

你可以有一些初始化代碼,這可能可以爲這一目標。在比賽開始前準備好所有必要的場地:

public class Game 
{ 
    private int myCounter; 

    public void initialize() 
    { 
     this.myCounter = 100; 
     //initialize canvas, connections, etc. 
    } 
} 

否則,只需在您的代碼中使用reset()方法即可在遊戲重新開始之前調用該方法。

1

而從一個活動移動到另一個,只需通過INT與意圖一起類似

Intent intent = new Intent(...); 
intent.putInt("MyImportantInt", someNumber); 

,如果它只是知名度的問題,嘗試getter和setter) 或烏爾情況下梅索德只是substracts 1從INT每次它叫

0

中序,以避免創建實例的每次訪問點使用Static

class PointsUtil{ 
    public static int points =10 
    } 

在任何地方在PROGRAMM

PointsUtil.points= points+new points 

當方法重載再次呼籲

PointsUtil.points= 10; 
+0

這沒有奏效。我得到錯誤,需要刪除靜態修飾符,然後它不起作用。 – marjanbaz 2013-04-05 14:22:06

-1

嘗試使用java.lang.Integer中,而不是原始的INT。