2017-09-28 21 views
-2

私は現在、クラス外のSimple Riddles Gameに取り組んでいます。私がしたいのは、質問が何であるかを検証するステートメントがあります。正しい。ここで複数のOR値を持つ文If

private void butt_Submit_Click(object sender, EventArgs e) 
     { 
      if (lab_Riddle.Text == "What Walks on 4 Legs in the Morning, 2 in the Afternoon and 3 in the Evening?") 

       if (TeBo_Ans.Text == "A Man") ; 
;    { 
       MessageBox.Show("Well Done"); 
       lab_Riddle.Text = ("I have an Eye but Cannot See- What Am I?"); 
      } 
      if (TeBo_Ans.Text == "Mankind") ; 
      { 
       MessageBox.Show("Good Words"); 
       lab_Riddle.Text = ("I have an Eye but Cannot See- What Am I?"); 
      } 
      if (TeBo_Ans.Text == "People") ; 
      { 
       MessageBox.Show("Yes"); 
       lab_Riddle.Text = ("I have an Eye but Cannot See- What Am I?"); 
      } 
      if (TeBo_Ans.Text == "A Person") ; 
      { 
       MessageBox.Show("Exactly"); 
       lab_Riddle.Text = ("I have an Eye but Cannot See- What Am I?"); 
      } 
      if (TeBo_Ans.Text == "Humankind") ; 
      { 
       MessageBox.Show("Exactly"); 
       lab_Riddle.Text = ("I have an Eye but Cannot See- What Am I?"); 
      } 
     } 

lab_Riddleが質問を含むラベルで、TeBo_Ansは、テキストボックスのユーザタイプへの答えである:ここで私はこれまで持っているコードです。作品のこのコードの並べ替えは、理想的に私は

If lab_Riddle.Text= [Riddle 1] 
{ 
    If TeBo_Ans == [a] OR [b] OR [d] 
    { 
    MessageBox.Show ("Correct") 
    lab_Riddle.Text [riddle 2] 
    } 
    Else 
    { 
    MessageBox.Show ("Incorrect") 
    } 
} 

言語のようなものにそれを凝縮したいCの私はまだ言っていない場合は#、および垂直線です。これはおそらく、これを行うには本当に長く複雑な方法ですが、私はまだコーディングするのが非常に新しいです。

+1

だけであなただけの '' ||演算子を探している – NicoRiff

+0

すべての比較をしないためにもしあなたが他の 'を使うことができますか? https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/ – David

+1

また、あなたのコードにはかなり重大なバグがありますので、どのように動作しているのかわかりません。すべての*は現在の形式で表示されます。あなたの 'if'条件の最後にあるセミコロンはあなたの' if'ブロックを終了させます。したがって、すべての条件が無視され、すべてのコードブロックが実行されています。 – David

答えて

2

さてあなたは、このような

String answer = "a dog"; 
    Dictionary<string, string> riddleans = new Dictionary<string, string>(); 
    riddleans.Add("a man", "Well done"); 
    riddleans.Add("mankind", "Good words"); 
    answer = answer.ToLower(); 
    if (riddleans.ContainsKey(answer)) 
    { 
     Messagebox.Show(riddleans[answer]); 
     gotonextriddle(); 
    } 
    else 
    { 
     Messagebox.Show("Incorrect); 
    } 

として答えを

を辞書を使用することができますが、あなたはその後、謎のリストを持っているので、ということを使用して構造体またはクラスのいずれかを有することにより、その上で展開することができますに。

ここで指摘しておきたいことは、答えのより遅いことでした。つまり、「人類」の代わりに「人類」または「人類」を書いても、それはすべて適合します。

0

あなたは、ユーザーが入力しているものに応じて表示するテキストの異なる部分があるので、あなたは明らかにDictionary

var answers = new Dictionary<string, string>() 
{ 
    { "Mankind", "Good words" }, 
    { "People", "Yes" }, 
    { "A Man", "People" } 
}; 

var answerGiven = TeBo_Ans.Text; 

if (answers.ContainsKey(answerGiven)) 
{ 
    // user has the correct answer 
} 

でそれを格納することができ、この場合には、あなたは、大文字と小文字の区別を考慮する必要があるだろうしかし、それはあなたが望むことをやり遂げる一つの方法です。私はいくつかの点で、あなたの質問がコードレビュースタックエクスチェンジに置かれるほうがよいと思います。

https://codereview.stackexchange.com/