2016-10-09 7 views
0

私はハンギングコードを正しく実行するように変更しようとしており、次にスコアを維持するために必要な追加作業を行います。ここに説明がありますシャープなハングマンゲーム+カウンター

  • あなたはハングマンプログラムを作成します。このゲームでは、コンピュータにハードコードされた単語があり、ユーザーは正しい単語を推測するまで、一度に1文字ずつ入力します。スコアは、ユーザーが誤った推測の数になるように集計されます。したがって、スコアが小さい方が良いです。

最初に、単語は '*'や ' - 'などの特殊文字のリストとして表示されます。ユーザーは一度に1文字ずつ入力し、各入力は単語と比較されます。推測が正しい場合、特殊文字ではなく文字が表示されます。それぞれの間違った推測はスコアを増やします。ユーザーが正しい単語を推測すると、ゲームは終了します。

具体的には、私はループと配列の導入のために与えられたものです: 反復を可能にするようにデザインとプログラムを修正してください。単語を解決するために、推測の数を10に増やします。各文字を********のような特殊文字としてユーザーに表示します。次のように推測される正しい文字の配列を作成してください:char [] guessed = new char [26]; 推測された配列内の文字数を追跡するには、カウンタも必要です。間違って推測された文字を追跡する必要はありません。

以下は私のコードです。

//declare variables 
char letter1 = 'r'; 
char letter2 = 'o'; 
char letter3 = 's'; 
char letter4 = 's'; 
char letter; 
int score = 0; 
int finalScore = 0; 
char[] guessed = new char[26]; 
int index = 0; 

     Console.WriteLine("Welcome to the Hangman Program"); 

     for (int i = 0; i < 10; i++) 
     { 

      Console.WriteLine("****"); 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 


      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 

      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
      } 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 
      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 
      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
      } 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 
      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 
      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
      } 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 
      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 
      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
      } 
      finalScore = score; 
     } 

     Console.WriteLine("_____________________________________________"); 
     Console.WriteLine("Your score is: " + finalScore); 
     Console.ReadLine(); 

    } 
} 

}

私はこれを実行したら、それは無限ループで私を置きます。私はここで間違っていることを失いつつある。


更新:

私の代わりに40の12回実行するためにそれを減らすことができた私は私のwhileループでINT < 8を持っている場合、それは8回を実行します。私が9以上のものに設定すると、12回実行されます。これは3回目のループ全体を開始します。コードは以下のとおりです

char letter1 = 'r'; 
char letter2 = 'o'; 
char letter3 = 's'; 
char letter4 = 's'; 
char letter; 
int score = 0; 
int finalScore = 0; 
char[] guessed = new char[26]; 
int index = 0; 


     Console.WriteLine("Welcome to the Hangman Program"); 

     do 
     { 

      Console.WriteLine("****"); 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 


      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 

      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
       index++; 
      } 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 
      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 
      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
       index++; 
      } 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 
      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 
      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
       index++; 
      } 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 
      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 
      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
       index++; 
      } 
      finalScore = score; 
     } 
     while ((index < 9) || (letter != letter1 && letter!= letter2 && letter != letter3 && letter != letter4)); 

     Console.WriteLine("_____________________________________________"); 
     Console.WriteLine("Your score is: " + finalScore); 
     Console.ReadLine(); 
     } 

    } 
} 

答えて

0

単語が完成すると終了条件はありません。

無限ループはありません。行数は4回(ReadLine呼び出しごとに1回)10回だけ読み込まれます(forループ)。 40の入力の後、実際に終了します。

このコードを共有すると、このコードをhttps://codereview.stackexchange.com/に共有することをおすすめします。

+0

あなたが退室条件となるように私が入れることをお勧めしたいと思いますか?別のタイプのループを作成する必要がありますか、それとも私のif文に入れることができますか? – wrexxin97

+0

@ wrexxin97単語が完成したら、ループを終了します。 X回の試行(40分未満!)に達すると、ループを終了します。私は両方の条件をチェックするのにしばらく時間をかけます。 –

+0

whileループはどこに配置しますか? forループを置き換えるか、if文の後に追加することができますか? – wrexxin97

関連する問題