2013-04-05 157 views
2

如果有人能告訴我不同​​的方式來做到這一點,我將不勝感激。如何將類變量重置爲0或默認值?我使用類變量,因爲我不知道另一種方式來做到這一點。在我的遊戲結束後,我將結果放在類變量中,因爲我有兩輪遊戲,第一輪結束後添加結果,並且類變量對於此原因很有好處,即使重新啓動我的遊戲方法後,它仍然保留了我以前的結果。第二輪結束後,我將結果添加到以前的結果,然後關閉活動並將文本結果設置爲文本到按鈕。但是當我點擊新遊戲時,那個按鈕仍然保存着那個文本,導致類變量仍然保留着它。當我參加新遊戲時如何重置該類變量?如何將類變量重置爲默認值0?

這裏是我的遊戲代碼,它的一些(100點開始量,並在遊戲進度變得更低):

public class Asocijacije extends Activity implements OnClickListener{ 

int brojPoenaAsocijacije = 100; 
    public static int brojPoenaUkupno; 

然後我跳到這裏有很多代碼,並在這裏就是我加分。 brojPoenaAsocijacije在這一輪得到的分數:

brojPoenaUkupno = brojPoenaUkupno + brojPoenaAsocijacije; 

這是我的主要活動,我設置點從我的類變量爲一個按鈕(在這裏我添加的註釋):

public class Izbor extends Activity implements OnClickListener{ 

    Asocijacije poeni = new Asocijacije(); 

    Button toploHladno, asocijacije, cigle, spojnice, nazad, poeniTH, poeniAso, poeniCigle, poeniSpojnice; 
    TextView naslov; 
    public boolean music; 
    MediaPlayer buttonClicks, buttonBack; 

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

     requestWindowFeature(Window.FEATURE_NO_TITLE); //full screen 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.izbor); 

     SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
     music = getPrefs.getBoolean("checkbox", true); 

     addListenerOnButton(); 

    } 



    private void addListenerOnButton() { 
     buttonClicks = MediaPlayer.create(this, R.raw.click); 
     buttonBack = MediaPlayer.create(this, R.raw.button31); 

     Typeface naslovType = Typeface.createFromAsset(getAssets(), "Lobster.ttf"); 
     Typeface dugmad = Typeface.createFromAsset(getAssets(), "Bebas.ttf"); 
     naslov = (TextView) findViewById(R.id.tvIzborNaslov); 
     toploHladno = (Button) findViewById(R.id.bIzbor1); 
     asocijacije = (Button) findViewById(R.id.bIzbor2); 
     cigle = (Button) findViewById(R.id.bIzbor3); 
     spojnice = (Button) findViewById(R.id.bIzbor4); 
     nazad = (Button) findViewById(R.id.bIzborNazad); 
     poeniTH = (Button) findViewById(R.id.bPoeniTH); 
     poeniAso = (Button) findViewById(R.id.bPoeniAso); 
     poeniCigle = (Button) findViewById(R.id.bPoeniCigle); 
     poeniSpojnice = (Button) findViewById(R.id.bPoeniSpojnice); 
     naslov.setTypeface(naslovType); 
     toploHladno.setTypeface(dugmad); 
     asocijacije.setTypeface(dugmad); 
     cigle.setTypeface(dugmad); 
     spojnice.setTypeface(dugmad); 
     nazad.setTypeface(dugmad); 
     poeniAso.setTypeface(dugmad); 

     toploHladno.setOnClickListener(this); 
     asocijacije.setOnClickListener(this); 
     cigle.setOnClickListener(this); 
     spojnice.setOnClickListener(this); 
     nazad.setOnClickListener(this); 

    } 


    @Override 
    protected void onStart() { 
     super.onStart(); 
     poeniAso.setText("" + poeni.brojPoenaUkupno); //I do it here 
    } 

    public void onClick(View v) { 
     switch(v.getId()){ 
     case R.id.bIzbor1: 
      if(music == true){ 
       buttonClicks.start(); 
        } 
      startActivity(new Intent("rs.androidaplikacije.toplo_hladno.GAME")); 
      break; 
     case R.id.bIzbor2: 
      if(music == true){ 
       buttonClicks.start(); 
        } 
      startActivity(new Intent("rs.androidaplikacije.toplo_hladno.ASOCIJACIJE")); 
      break; 
     case R.id.bIzbor3: 
      if(music == true){ 
       buttonClicks.start(); 
        } 

      break; 
     case R.id.bIzbor4: 
      if(music == true){ 
       buttonClicks.start(); 
        } 

      break; 
     case R.id.bIzborNazad: 
      if(music == true){ 
       buttonBack.start(); 
        } 
      poeniAso.setText(""); 
      finish(); 
      break; 
     } 

    } 

} 
+1

你的變量名是不是真的幫助... – 2013-04-05 20:02:30

+0

你開始一個新遊戲的時候,晉級下一輪時,由於使用相同的按鈕?如果是這種情況,則應使用計數器,並在計數器達到特定值時重置計數器和結果。 – 2013-04-05 20:13:07

+0

不,不一樣。我使用Handler重新加載我的遊戲活動。 – marjanbaz 2013-04-05 20:22:04

回答

2

因爲我沒有找到在開始新遊戲的代碼片段中,我只能說:

Asocijacije.brojPoenaUkupno = 0; 
+1

我以爲我應該嘗試類似的東西,從Asocijacije類中創建新對象,然後調用將brojPoenaUkupno設置爲0的預製方法,但是現在從您的代碼中,我可以看出這有點矯枉過正。 :)我會嘗試你的建議。 – marjanbaz 2013-04-05 20:11:03

1

可能要在您關閉遊戲活動時重置您的狀態。

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    Asocijacije.brojPoenaUkupno = 0; 
    //whatever other things need to be reset. 
} 
+0

好主意。我會試試這個。謝謝。 – marjanbaz 2013-04-05 20:20:07

+0

你可以在代碼中給出一個例子嗎?你會怎麼做這個方法?只是爲了嘗試這種方式。我現在嘗試設置setters和getters,並在我的分數框中得到0。 – marjanbaz 2013-04-05 20:39:29

+0

我認識到Izbor和Asocijacije是不同的類,更好的是在onDestroy()中重置你的狀態。 如果新遊戲在Asocijacije,那麼只需在Izbor重置遊戲狀態。如果它在任何Asocijacije呼叫中,那麼你必須在Asocijacije重置遊戲狀態。 – 2013-04-05 21:10:14

相關問題