2011-08-23 4 views
1

아래 코드에 문제가 있습니다. 사용자가 리로드와 같은 RadioButton을 선택하고 제출 버튼을 클릭하면 화면의 탄약 카운터가 1 씩 증가합니다. "불"의 RadioButton 선택시 탄환 카운터가 1 감소합니다.왜 내 변수가 올바르게 계산되지 않습니까?

내가 가지고있는 문제는 탄약 카운터가 사용자 선택 뒤에있는 것 같습니다. 그래서 :

  • 탄약 카운트 = 1 : 사용자가 다시 선택
  • 탄약 카운트 = 1 : 사용자 선택 장전
  • 탄약 횟수 = 2 : 사용자가 화재를 선택
  • 탄약 횟수 = 3 : 사용자 선택
  • 탄약의 수를 다시로드 = 2 :

참조 ^^, 탄약 수가 지속적으로 사용자의 선택 뒤에 하나입니다. 이 문제를 어떻게 해결할 수 있습니까?

namespace ShotgunApp 
{ 
    public partial class SingleGame : PhoneApplicationPage 
    { 
     public static class AmmoCount 
     { 
      public static int userAmmo = startVars.startAmmo; 
      public static int geniusAmmo = startVars.startAmmo; 
     } 


     public SingleGame() 
     { 
      InitializeComponent(); 
      GeniusAmmo.Text = "ammo: " + AmmoCount.geniusAmmo; 
      UserAmmo.Text = "ammo: " + AmmoCount.userAmmo; 


     } 

     private void submit_Click(object sender, RoutedEventArgs e) 
     { 
      Move(); 
     } 

     public void Move() 
     { 
      if (uReload.IsChecked.HasValue && uReload.IsChecked.Value == true) 
      { 
       UserAmmo.Text = "ammo: " + AmmoCount.userAmmo++; 

      } 
      else if (uShield.IsChecked.HasValue && uShield.IsChecked.Value == true) 
      { 

      } 
      else if (uFire.IsChecked.HasValue && uFire.IsChecked.Value == true) 
      { 
       UserAmmo.Text = "ammo: " + AmmoCount.userAmmo--; 
      } 
      else 
      { 

      } 
     } 
    } 
} 

답변

5

AmmoCount.userAmmo++AmmoCount.userAmmo--은 (후위 연산자) 감소시키는 올바르게 변수를 증가하지만 그들은 이전의 변경되지 않은 값을 반환한다.

접두어 연산자 : (++AmmoCount.userAmmo)(--AmmoCount.userAmmo)을 사용해야합니다.

+0

감사합니다. –

관련 문제