2011-08-23 8 views
0

私は以下のコードを用意しています。しかし、Move()メソッドとGenius()メソッドがロジックを実行しすぎているため、いくつかのバグが発生しています。私は、submitメソッドで呼び出されている場合、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 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

"私は、送信クリックメソッドによって呼び出されている場合、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"; 
      } 
関連する問題