2016-12-26 9 views
0

私はこのHangManゲームを持っており、問題があります。ユーザーがアルファベットのボタンをクリックすると、自分のコードにあるif-if文にジャンプしません。 "現在の"変数は文字列であり、ボタンの内容は文字で、その単語にその文字が含まれているかどうかを知りたいと思っています。たとえそのコードをデバッグしたとしても、その推測方法で「現在の」変数(推測単語)が得られません。全てに感謝!なぜ文の中にジャンプしないのですか? C##UWP

public sealed partial class Hangman : Page 
{ 
    private string[] words; 
    private int WrongGuesses = 0; 
    private string copyCurrent; 
    private string current; 
    public Hangman() 
    { 
     InitializeComponent(); 
     loadWords(); 
     DisplayTheWord(); 
     Hangman_OnLoaded(); 
    } 

    private void loadWords() 
    { 
     string[] ReadWords = File.ReadAllLines("EnglishWords.txt"); 
     words = new string[ReadWords.Length]; 
    } 
    private string[] images = 
    { 
     "/Assets/hang1.png", "/Assets/hang2.png", "/Assets/hang3.png", 
     "/Assets/hang4.png", "/Assets/hang5.png" 
    }; 

    public void PlayAgain_OnClick(object sender, RoutedEventArgs e) 
    { 
     WrongGuesses = 0; 
     BitmapImage Hangman2 = new BitmapImage(); 
     Uri URL = new Uri(BaseUri, images[WrongGuesses]); 
     Hangman2.UriSource = URL; 
     picture.Source = Hangman2; 
     string[] ReadWords = File.ReadAllLines("EnglishWords.txt"); 
     int NextNumber = new Random().Next(words.Length); 
     copyCurrent = ""; 
     for (int i = 0; i < ReadWords[NextNumber].Length; i++) 
     { 
      copyCurrent += "_" + " "; 
     } 
     CopiedWord.Text = copyCurrent; 
    } 

    public void DisplayTheWord() 
    { 
     WrongGuesses = 0; 
     BitmapImage Hangman2 = new BitmapImage(); 
     Uri URL = new Uri(BaseUri, images[WrongGuesses]); 
     Hangman2.UriSource = URL; 
     picture.Source = Hangman2; 
     string[] ReadWords = File.ReadAllLines("EnglishWords.txt"); 
     int NextNumber = new Random().Next(words.Length);    
     copyCurrent = ""; 
     current = ReadWords[NextNumber];       

     for (int i = 0; i < ReadWords[NextNumber].Length; i++) 
     { 
      copyCurrent += "_" + " ";        
     } 
     CopiedWord.Text = copyCurrent;        
    } 
    public void Hangman_OnLoaded() 
    { 
     const int btnSize = 35;         
     var c = 0;            
     for (var i = 65; i <= 90; i++)       
     { 
      var btn = new Button {        
       Content = (char) i,        
      };              
      btn.Width = btn.Height = btnSize;      
      var margin = btn.Margin;        
      margin.Left = c += 37;         
      btn.Margin = margin;         
      GridMain.Children.Add(btn);       
      btn.Click += Guessing;        
     } 

    } 
    private void Guessing(object sender, RoutedEventArgs e) 
    { 
     Button choice = sender as Button; 
     var ltr = choice.Content.ToString(); 
     if (current.Contains(ltr))        // it wont jump into this if sentence     
     { 
       char[] temp = copyCurrent.ToCharArray();   
       char[] find = current.ToCharArray();    
       char guessChar = ltr.ElementAt(0);     
      for (int index = 0; index < find.Length; index++)  
       {             
        if (find[index]== guessChar)     
        {            
         temp[index] = guessChar;     
        }            
       }             
       copyCurrent = new string(temp);     
      } 
      else 
      { 
       WrongGuesses++;          
      } 
      if (WrongGuesses < 6) 
      { 
       //picture.Source = muudab pilti 
      } 
+1

このコードをデバッグしている場合は、_ltr_と_current_の値がわかっている必要があります。だから、ちょうどあなたが期待している通りになっていない点を自分で尋ねてください。 – Steve

+0

私はltrの値を取得しますが、私は現在の値を取得しません。 –

答えて

0

文の場合にそれがジャンプしないのはなぜ?あなたのcurrent変数がnullであるか、それはあなたが与えるItrが含まれていないため

ないジャンプがあります。

私はLTRの値を取得する、しかし、私は、現在の値

私はcurrent値を得ることについて、あなたのコードをテストしているし、コード自体には何も問題はありませんを得ることはありません。しかしcurrentは、EnglishWords.txtのランダムな行から得られた文字列です。ランダムな行に内容がない場合、何も含まれません。したがって、空白行があり、結果がcurrent = ReadWords[NextNumber];の場合、テキストファイルをチェックしてください。

関連する問題