2017-06-03 10 views
0

私はC#を使用してコードを学習する過程にあります。私は、私のループが私のHangmanプログラムに10回入力した後に終了しない理由を理解できませんでしたが、プログラムは6などのより小さい数に設定しても機能します。do whileループを使用しています。 〜10、私は無限ループであると思われるものを得続けます。コンパイルエラーはありません。これは割り当てです。どんな助けもありがとうございます。私がもし他に10回...ポインタは素晴らしいことだ繰り返していないよようにコードを書くためのより良い方法があるかどうC#DO Whileループ - Hangman

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace hangman_projectW4 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //variable list 
      char letter0 = 'k'; 
      char letter1 = 'i'; 
      char letter2 = 'd'; 
      char letter3 = 'd'; 
      char letter4 = 'e'; 
      char letter5 = 'r'; 
      char letter; 
      int score = 0; 
      string user = ""; 

      //inputs inputs 
      Console.ForegroundColor = ConsoleColor.Green; 
      user = Console.ReadLine(); 
      Console.WriteLine("Hi! Welcome to Hangman."); 
      Console.WriteLine(); 
      Console.WriteLine(); 
      Console.WriteLine(); 
      Console.WriteLine(); 
      Console.WriteLine("Player, please enter a letter at prompt."); 
      Console.Write("_________________________________________________________________"); 
      user = Console.ReadLine(); 
      Console.ForegroundColor = ConsoleColor.Green; 

      do 
      { 
      Console.WriteLine("Please enter a letter: "); 
      letter = char.Parse(Console.ReadLine()); 

      user = Console.ReadLine(); 
      if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5) 
      { 
       Console.WriteLine("You guessed correctly!"); 

      } 
      else 
      { 
       Console.WriteLine("Incorrect. Try Again."); 
       score++; 
      } 

      user = Console.ReadLine(); 
      Console.WriteLine("Please enter a letter: "); 
      letter = char.Parse(Console.ReadLine()); 

      user = Console.ReadLine(); 
      if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5) 
      { 
       Console.WriteLine("You guessed correctly!"); 

      } 
      else 
      { 
       Console.WriteLine("Incorrect. Try Again."); 
       score++; 
      } 

      user = Console.ReadLine(); 
      Console.WriteLine("Please enter a letter: "); 
      letter = char.Parse(Console.ReadLine()); 

      user = Console.ReadLine(); 
      if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5) 
      { 
       Console.WriteLine("You guessed correctly!"); 

      } 
      else 
      { 
       Console.WriteLine("Incorrect. Try Again."); 
       score++; 
      } 

      user = Console.ReadLine(); 
      Console.WriteLine("Please enter a letter: "); 
      letter = char.Parse(Console.ReadLine()); 

      user = Console.ReadLine(); 
      if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5) 
      { 
       Console.WriteLine("You guessed correctly!"); 

      } 
      else 
      { 
       Console.WriteLine("Incorrect. Try Again."); 
       score++; 
      } 

      user = Console.ReadLine(); 
      Console.WriteLine("Please enter a letter: "); 
      letter = char.Parse(Console.ReadLine()); 

      user = Console.ReadLine(); 
      if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5) 
      { 
       Console.WriteLine("You guessed correctly!");     

      } 
      else 
      { 
       Console.WriteLine("Incorrect. Try Again."); 
       score++; 
      } 

      user = Console.ReadLine(); 
      Console.WriteLine("Please enter a letter: "); 
      letter = char.Parse(Console.ReadLine()); 

      user = Console.ReadLine(); 
      if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5) 
      { 
       Console.WriteLine("You guessed correctly!");    

      } 
      else 
      { 
       Console.WriteLine("Incorrect. Try Again."); 
       score++; 
      } 

      user = Console.ReadLine(); 
      Console.WriteLine("Please enter a letter: "); 
      letter = char.Parse(Console.ReadLine()); 

      user = Console.ReadLine(); 
      if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5) 
      { 
       Console.WriteLine("You guessed correctly!"); 

      } 
      else 
      { 
       Console.WriteLine("Incorrect. Try Again."); 
       score++; 
      } 

      user = Console.ReadLine(); 
      Console.WriteLine("Please enter a letter: "); 
      letter = char.Parse(Console.ReadLine()); 

      user = Console.ReadLine(); 
      if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5) 
      { 
       Console.WriteLine("You guessed correctly!"); 

      } 
      else 
      { 
       Console.WriteLine("Incorrect. Try Again."); 
       score++; 
      } 

      user = Console.ReadLine(); 
      Console.WriteLine("Please enter a letter: "); 
      letter = char.Parse(Console.ReadLine()); 

      user = Console.ReadLine(); 
      if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5) 
      { 
       Console.WriteLine("You guessed correctly!"); 

      } 
      else 
      { 
       Console.WriteLine("Incorrect. Try Again."); 
       score++; 
      } 

      user = Console.ReadLine(); 
      Console.WriteLine("Please enter a letter: "); 
      letter = char.Parse(Console.ReadLine()); 

      user = Console.ReadLine(); 
      if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5) 
      { 
       Console.WriteLine("You guessed correctly!"); 

      } 
      else 
      { 
       Console.WriteLine("Incorrect. Try Again."); 
       score++; 
      } 
      }while (score <= 10); 

      //outputs 
      user = Console.ReadLine(); 
      user = Console.ReadLine(); 
      Console.Write("_________________________________________________________________"); 
      user = Console.ReadLine(); 
      Console.Write("Guessed Incorrectly: " + score); 
      Console.ReadLine(); 
      Console.ReadLine(); 
      Console.Write("Thank you for playing Hangman."); 
      Console.ReadLine(); 
     } 
    } 
} 

、また:ここで私が書いてきたコードです!ありがとう。

+1

ようこそ。あなたのコードをすべてここにドロップしないでください。この記事を読む:https://stackoverflow.com/help/mcve最小で、完全で、検証可能なコード例を提供してください。 –

+2

これは、実行時にデバッガでコードをステップ実行する良い機会です。ループ状態が何を確認しているかを覚えておいて、期待どおりにその値を変更するループですか?無限ループの場合、 'score'は常に' <= 10'と思われます。デバッグし、それが期待どおりに変更されていない理由を調べます。 – David

答えて

0

十分に試してみると、終了します。スコアが11以上になったら、コードを続行して別の試行を続けることができます。コードのコピーを停止します。賢くなり、コードを最小限に抑えましょう!すでに10点以上に達しているかどうかをチェックしなくても、繰り返しループを繰り返すことができます(score)。

do 
{ 
    Console.WriteLine("Please enter a letter: "); 
    letter = char.Parse(Console.ReadLine()); 

    if (letter == letter0 || 
     letter == letter1 || 
     letter == letter2 || 
     letter == letter3 || 
     letter == letter4 || 
     letter == letter5) 
    { 
     Console.WriteLine("You guessed correctly!"); 
    } 
    else 
    { 
     Console.WriteLine("Incorrect. Try Again."); 
     score++; 
    } 
} while (score <= 10); 

次のステップは、コレクションまたはリストにすべての文字を追加し、if文を短縮することである。

はこのような何かにあなたのループを短くしてください。 ;-)

+0

10回Xを打つと私はゲームに勝つ; o) –

+0

ありがとうQC。私の得点の目的は++ですか?間違ったプロンプトで試行回数を記録するには?それとも、私が何かをコピーした回数のために繰り返していたのです。私は論理を理解しようとしています... –

+0

あなたの全体のループは非常に多くの点で間違っています:繰り返されるコード、常に割り当てられたユーザ変数、間違ったスコアリングなどおそらくは別のハングマンの例を読んで、あなた自身で書く。サンプル:https://code.msdn.microsoft.com/windowsdesktop/HangMan-C-version-e0d17f1b –