2011-10-23 10 views
1

これはコンピュータープログラミングコースの最初の1年間です。私の現在の課題の1つは、はさみのゲーム。2番目のユーザー入力の検証が正しく機能していないと、私は多くの不要なコーディングがあると言います

私はそのほとんどが働いていますが、私の先生は実際に私にそれが何であるか教えてくれないと、たくさんの不要なコードがあると言っています。私はこの流線を可能な限り最高にしたいと思っています。私はどんな作品にも満足しています。

また、ユーザー入力の2番目の検証(ユーザーが選択を行い、プログラムが実行され、誰が勝利したかを表示してからもう一度選択するように求められます)が最初のように機能せず、何がうまくいかない。私は過去2週間これを見てきたので、それを理解することができないので、どんな助けにも感謝しています。あなたは、ほぼ同じことを複数回書き込むことに自分自身を見つけた場合、あなたはそれをリファクタリングする方法を探す必要があり

namespace Assignment04 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     // Declare variables 
     int gamesPlayed = 0, userWins = 0, computerWins = 0, draws = 0, userSelection, computerSelection; 
     bool inputIsValid = false; 
     // Prompt user 
     Console.WriteLine("Welcome to the Rock, Paper, Scissors game!"); 
     Console.WriteLine("1 - Rock"); 
     Console.WriteLine("2 - Paper"); 
     Console.WriteLine("3 - Scissors"); 
     Console.WriteLine("4 - Quit program and view record"); 
     // Create a loop to validate user's selection 
      do 
      { 
       Console.Write("Please make a selection: "); 
       // loop and test using TryParse() 
       while (!int.TryParse(Console.ReadLine(), out userSelection)) 
       { 
        // invalid data type 
        Console.WriteLine("Invalid input."); 
        Console.Write("Please make a selection: "); 
       } 
       // test if input is within acceptable range 
       if (userSelection >= 1 && userSelection <= 4) 
       { 
        inputIsValid = true; 
       } 
       else 
       { 
        // valid integer, but out of acceptable range 
        Console.WriteLine("Number out of range."); 
       } 
      } while (!inputIsValid); 
      // Display user's choice 
      while (userSelection >= 1 && userSelection <= 3) 
      { 
       if (userSelection == 1) 
       { 
        Console.WriteLine("\nYou have selected Rock"); 
        gamesPlayed = gamesPlayed + 1; 
       } 
       else if (userSelection == 2) 
       { 
        Console.WriteLine("\nYou have selected Paper"); 
        gamesPlayed = gamesPlayed + 1; 
       } 
       else if (userSelection == 3) 
       { 
        Console.WriteLine("\nYou have selected Scissors"); 
        gamesPlayed = gamesPlayed + 1; 
       } 
       // Generate computer's choice 
       Random randomNumber = new Random(); 
       computerSelection = randomNumber.Next(1, 4); 
       // Display computer's choice 
       if (computerSelection == 1) 
       { 
        Console.WriteLine("Computer has chosen Rock"); 
       } 
       else if (computerSelection == 2) 
       { 
        Console.WriteLine("Computer has chosen Paper"); 
       } 
       else if (computerSelection == 3) 
       { 
        Console.WriteLine("Computer has chosen Scissors"); 
       } 
       // Calculate and display who wins 
       if (userSelection == computerSelection) 
       { 
        draws = draws + 1; 
       } 
       else if (userSelection == 1 && computerSelection == 3 || userSelection == 2 && computerSelection == 1 || userSelection == 3 && computerSelection == 2) 
       { 
        userWins = userWins + 1; 
       } 
       else if (userSelection == 1 && computerSelection == 2 || userSelection == 2 && computerSelection == 3 || userSelection == 3 && computerSelection == 1) 
       { 
        computerWins = computerWins + 1; 
       } 
       // Display results and statistics 
       Console.WriteLine("\nYou have played {0} games with {1} wins, {2} draws, and {3} losses.", gamesPlayed, userWins, draws, computerWins); 
       do 
       { 
        Console.Write("Please make a selection: "); 
        // loop and test using TryParse() 
        while (!int.TryParse(Console.ReadLine(), out userSelection)) 
        { 
         // invalid data type 
         Console.WriteLine("Invalid input."); 
         Console.Write("Please make a selection: "); 
        } 
        // test if input is within acceptable range 
        if (userSelection >= 1 && userSelection <= 4) 
        { 
         inputIsValid = true; 
        } 
        else 
        { 
         // valid integer, but out of acceptable range 
         Console.WriteLine("Number out of range."); 
        } 
       } while (!inputIsValid); 
      } 
      if (gamesPlayed == 0 && userSelection == 4) 
      { 
       Console.WriteLine("\nGoodbye"); 
      } 
      else if (gamesPlayed > 0 && userSelection == 4) 
      { 
       Console.WriteLine("\nGames played = " + gamesPlayed); 
       Console.WriteLine("User wins = " + userWins); 
       Console.WriteLine("Computer wins = " + computerWins); 
       Console.WriteLine("Draws = " + draws); 
      } 
     Console.ReadLine(); 
    } 
} 
} 
+0

」のようなものを使ってタイトルを接頭辞ないでくださいC#&Visual Basic "を参照してください。あなたの質問が属するカテゴリを示すタグを使用してください。 –

答えて

0

次のように私が持っている

コードがあります。ここでは、不必要な繰り返しのコードの例です:

Console.WriteLine("\nYou have selected " + tools[userSelection - 1]); 
gamesPlayed++; 
ツールは次のように定義されて

if (userSelection == 1) 
{ 
    Console.WriteLine("\nYou have selected Rock"); 
    gamesPlayed = gamesPlayed + 1; 
} 
else if (userSelection == 2) 
{ 
    Console.WriteLine("\nYou have selected Paper"); 
    gamesPlayed = gamesPlayed + 1; 
} 
else if (userSelection == 3) 
{ 
    Console.WriteLine("\nYou have selected Scissors"); 
    gamesPlayed = gamesPlayed + 1; 
} 

はに単純化することができる

string[] tools = { "Rock", "Paper", "Scissors" }; 
関連する問題