Почему моя переменная не считает правильно? - PullRequest
1 голос
/ 23 августа 2011

У меня проблема с кодом ниже. Когда пользователь выбирает RadioButton (например, перезагрузить) и нажимает кнопку отправки, я хочу, чтобы счетчик боеприпасов на экране увеличился на 1. При выборе «огня» в RadioButton я хочу, чтобы счетчик боеприпасов уменьшился на единицу.

Проблема, с которой я столкнулся, заключается в том, что счетчик боеприпасов, похоже, стоит за выбором пользователя. Итак:

  • количество боеприпасов = 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
            {

            }
        }
    }
}

1 Ответ

5 голосов
/ 23 августа 2011

AmmoCount.userAmmo++ и AmmoCount.userAmmo-- (постфиксные операторы) корректно уменьшают и увеличивают переменную, но возвращают прежние неизмененные значения.

Вы должны использовать префиксные операторы: (++AmmoCount.userAmmo) и (--AmmoCount.userAmmo).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...