2011-08-23 77 views
0

我有一堆以下的代码。但是,由于方法Move()和Genius()运行的逻辑太多,所以我遇到了一些错误。我只想让两个方法在被submit提交点击方法调用的情况下运行。我怎样才能做到这一点?如何在调用时才运行方法?

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

     public static class Global 
     { 
      public static int lives = 1; 
      public static string GeniusMove; 
      public static string UserMove; 
     } 

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

     private void submit_Click(object sender, RoutedEventArgs e) 
     { 
      if (((String)submit.Content) == "Submit") 
      { 
       Move(); 
       submit.Content = "Wait for Genius..."; 
       uReload.IsEnabled = false; 
       uFire.IsEnabled = false; 
       uShield.IsEnabled = false; 
       Genius(); 
      } 
      else if (((String)submit.Content) == "Go!") 
      { 
       GeniusSpeak.Text = ""; 
       OutcomeDesc.Text = "You have " + Move() + " and Genius has " + Genius(); 
       Outcome.Text = "ANOTHER ROUND..."; 
       submit.Content = "Continue"; 
      } 
      else if (((String)submit.Content) == "Continue") 
      { 

       uReload.IsEnabled = true; 
       uFire.IsEnabled = true; 
       uShield.IsEnabled = true; 
       OutcomeDesc.Text = ""; 
       Outcome.Text = ""; 
       submit.Content = "Submit"; 
      } 
     } 


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

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

      } 
      else 
      { 
       submit.Content = "Enter a move!"; 
      } 

      return Global.UserMove; 
     } 

     public string Genius() 
     { 
      GeniusSpeak.Text = "Genius has moved"; 
      submit.Content = "Go!"; 

      Random RandomNumber = new Random(); 
      int x = RandomNumber.Next(0, 3); 

      if (x == 0) 
      { 
       Global.GeniusMove = "reloaded"; 
       GeniusAmmo.Text = "ammo: " + ++AmmoCount.geniusAmmo; 
      } 
      else if (x == 1) 
      { 
       Global.GeniusMove = "shielded"; 
      } 
      else if (x == 2) 
      { 
       Global.GeniusMove = "fired"; 
       GeniusAmmo.Text = "ammo: " + ++AmmoCount.geniusAmmo; 
      } 

      return Global.GeniusMove; 

     } 
    } 
} 
+0

你只叫'Move'和''从已经submit_Click' Genius'。问题是什么? –

+2

“我只想让两个方法运行,如果它们被提交点击方法调用。” - 除非我误解了陈述;那么*不要从其他地方打电话给他们......我错过了什么? –

+0

但我只是从submit_Click调用它们,当程序流程到达时仍然自己运行。我只想在点击提交时运行它们。 –

回答

4

存储在数据成员的最后结果:

 private string lastMoveResult = string.Empty; 
     private string lastGeniusResult = string.Empty; 

     private void submit_Click(object sender, RoutedEventArgs e) 
     { 
      if (((String)submit.Content) == "Submit") 
      { 
       lastMoveResult = Move(); 
       submit.Content = "Wait for Genius..."; 
       uReload.IsEnabled = false; 
       uFire.IsEnabled = false; 
       uShield.IsEnabled = false; 
       lastGeniusResult = Genius(); 
      } 
      else if (((String)submit.Content) == "Go!") 
      { 
       GeniusSpeak.Text = ""; 
       OutcomeDesc.Text = "You have " + lastMoveResult + " and Genius has " + lastGeniusResult ; 
       Outcome.Text = "ANOTHER ROUND..."; 
       submit.Content = "Continue"; 
      } 
相关问题