2013-04-05 3 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

Ваши имена переменных не очень помогает ... –

+0

Используете ли вы ту же кнопку, при запуске новой игры, так как при переходе на следующий этап? Если это так, вы должны использовать счетчик и сбросить счетчик и результат, как только счетчик достигнет определенного значения. –

+0

Нет, не то же самое. Я использую Handler для перезагрузки моей игровой активности. – marjanbaz

ответ

2

Потому что я не нахожу кусок кода, где вы начинаете новую игру, я могу только сказать:

Asocijacije.brojPoenaUkupno = 0; 
+1

Я думал, что должен попробовать что-то вроде этого, сделать новый объект из класса Asocijacije, а затем вызвать метод pre made, который устанавливает brojPoenaUkupno в 0, но теперь из вашего кода я вижу, что это немного перебор. :) Я попробую то, что вы предложили. – marjanbaz

1

Возможно хочет сбросить состояние при закрытии деятельности в игре.

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

Хорошая идея. Я попробую это. Благодарю. – marjanbaz

+0

Можете ли вы привести пример в коде, как бы вы получили метод для этого? Просто попробуй тоже. Я попробовал теперь настроить сеттеры и геттеры, и я получаю 0 в своем боксе. – marjanbaz

+0

i jsut понял, что Izbor и Asocijacije - это разные классы, лучше просто сбросить свое состояние в onDestroy(). Если новая игра находится в Asocijacije, то просто сбросьте состояние игры в Избор. Если это происходит во всех вызовах Asocijacije, вам придется сбросить состояние игры в Asocijacije. –

Смежные вопросы