2013-04-05 2 views
2

누구든지 내게 다른 방법을 말해 줄 수 있다면, 고맙겠습니다. 클래스 변수를 0 또는 기본값으로 재설정하는 방법 클래스 변수를 사용하기 때문에 다른 방법으로이 작업을 수행 할 수 없습니다. 내 게임이 끝나면 결과를 클래스 변수에 넣습니다. 게임 라운드를 두 번 반복하고 결과를 추가하고 클래스 변수가 게임 메서드를 다시 시작한 후에도 여전히 좋은 결과를 얻습니다. 결과. 두 번째 라운드가 끝나면 그 결과를 이전 결과에 추가 한 다음 활동을 닫고 단추에 텍스트 텍스트 결과를 설정합니다. 그러나 새 게임을 클릭하면 해당 버튼이 해당 텍스트를 계속 보유하기 때문에 클래스 변수가 여전히 보유하고 있습니다. 새 게임을 시작할 때 클래스 변수를 재설정하는 방법은 무엇입니까?클래스 변수를 기본값 0으로 재설정하는 방법은 무엇입니까?

다음은 그 중 일부 (100 점은 양의 시작이며, 그것은 게임 진행에 낮아짐), 내 게임 코드입니다 :

public class Asocijacije extends Activity implements OnClickListener{ 

int brojPoenaAsocijacije = 100; 
    public static int brojPoenaUkupno; 

그럼 내가 여기에 코드를 많이 생략하고 여기에 내가 포인트를 추가 곳입니다.

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

것은 내가 찾을 수 없기 때문에 :

brojPoenaUkupno = brojPoenaUkupno + brojPoenaAsocijacije; 

은 여기에 (내가 코멘트를 추가) 내가 버튼에 내 클래스 변수에서 포인트를 설정 내 주요 활동입니다 : brojPoenaAsocijacije는 라운드에서 포인트 적립됩니다 새로운 게임을 시작하는 코드 조각은 다음과 같이 말할 수 있습니다.

Asocijacije.brojPoenaUkupno = 0; 
+1

나는 그런 식으로 시도해야한다고 생각하고, Asocijacije 클래스에서 새로운 객체를 만든 다음, brojPoenaUkupno를 0으로 설정하는 미리 만들어진 메소드를 호출합니다.하지만 이제는 코드에서 볼 수 있듯이, 조금 지나치게 잔인합니다. :) 나는 당신이 제안한 것을 시도 할 것입니다. – marjanbaz

1

게임 내 활동을 종료 할 때 상태를 재설정하려고합니다.

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

좋은 아이디어. 나는 이것을 시도 할 것이다. 감사. – marjanbaz

+0

코드에 예제를 사용하면 어떻게 할 수 있습니까? 그냥 그렇게하려고 노력하십시오. 나는 setters와 getters를 셋업하려고 시도했고, 나는 나의 포인트 박스에 0을 얻는다. – marjanbaz

+0

나는 jzut가 Izbor와 Asocijacije가 서로 다른 클래스라는 것을 깨달았습니다. onDestroy()에서 상태를 재설정하는 것이 더 낫습니다. 새 게임이 Asocijacije에있는 경우, Izbor에서 게임 상태를 재설정하면됩니다. 그것이 Asocijacije라고 부르는 것이라면 Asocijacije에서 게임 상태를 리셋해야합니다. –

관련 문제