HOWTO · Csharp

C# でじゃんけんゲームを作成する

この記事では、C# でじゃんけんゲームを作成する方法を学びます。

この記事では、C# を使用してじゃんけんゲームを開発するプロセスについて説明します。Visual Studio を使用して、コンソールアプリ、名前、およびプロジェクトを作成します。

##C# でじゃんけんゲームを作成する

このゲームを作成するには、次の手順に従います。

  • ユーザーからの入力を受け取ります。
  • ランダムに出力を生成します。
  • 可能なすべての選択肢を比較します。
  • 勝者を宣言します。
  • ゲームを再開します。

このプログラムの操作には、さまざまな関数とメソッドが含まれます。ユーザーの入力が受信されると、システムはそれをシステムによって生成された入力と比較します。

このシステムで生成される入力はランダムになります。したがって、じゃんけんの 3つのオプションのいずれかを提供する可能性があります。両方の入力を受け取ると、条件付きレンダリングを実行します。

条件付きレンダリングは、勝者が発表されるかどうか、または勝者がいないかどうかを判断するための基盤として機能し、抽選が行われます。

using System;

namespace Hello_World {
  class Program {
    static void Main(string[] args) {}
  }
}

これらの行はコードの先頭にあり、通常のプログラムフローが開始されたままになります。

string ui, si;
int r;
Console.Write("What do you choose?\n\n Rock/ Paper/ Scissors? ");
ui = Console.ReadLine();
Random rnd = new Random();
r = rnd.Next(1, 4);

siui は、文字列としてのユーザー入力とシステム入力の 2つの変数であるため、ユーザーは選択した完全なスペルを入力する必要があります。r 変数は、コンピューターが選択のために生成する乱数用に作成された整数型変数です。

Console.Write("What do you choose?\n Rock/ Paper/ Scissors? ") ステートメントが画面に書き込まれ、ユーザーに選択内容を入力するように求めます。ui = Console.ReadLine() ステートメントは、ユーザーからの入力を受け取り、それを ui 変数に格納します。

Random rnd = new Random() ステートメントは、後で乱数を生成するために使用される乱数の変数 rnd を作成します。r = rnd.Next(1, 4) ステートメントは、1 から 3 の範囲のランダムを生成し、それを r 変数に格納します。

switch (r) {
  case 1:
    si = "Rock";
    Console.WriteLine("Computer chose Rock");
    if (ui == "Rock" || ui == "rock") {
      Console.WriteLine("\nIt is a draw");
    } else if (ui == "Paper" || ui == "paper") {
      Console.WriteLine("\nYou Win!");
    } else {
      Console.WriteLine("\nYou Lose!");
    }
    break;
}

switch() では、r 変数が 1 から 4 までの任意の数を保持する場合のオプションを検討します。ケース 1 では、乱数が 1 であるかどうかを確認し、1 である場合は、システム入力 si を設定します。ロックする変数。

その後、Console.WriteLine("Computer chose Rock") ステートメントを使用してコンソールに書き込みます。このステートメントは、コンピューターがロックを選択した画面に出力されます。次に、if 条件を使用して、ユーザーが選択のために入力した内容を確認します。

if (ui == "Rock"||ui == "rock") ステートメントは、もしユーザーも rock を入力したら、それは抽選で、Console.WriteLine("\nIt is a draw") によってスクリーンにプリントされるのをチェックします。そうでなければ、else if(ui == "Paper"||ui == "paper") で rock でなく、ユーザーが入力したのは paper かどうかを確認します。

yes の場合、ユーザーが勝ちました。これは Console.WriteLine("\nYou Win!"); によって出力されます。

チェックした両方のオプションをユーザーが入力しなかった場合、ユーザーがはさみを入力したことは明らかであるため、ユーザーは負けました。そのため、最後に else を使用しました。これにより、You Lose!が印刷されます。

最後に、break ステートメントを使用して switch() を終了します。

case 2:
  si = "Paper";
  Console.WriteLine("Computer chose Paper");
  if (ui == "Rock" || ui == "rock") {
    Console.WriteLine("\nYou Lose!");
  } else if (ui == "Paper" || ui == "paper") {
    Console.WriteLine("It is a draw");
  } else {
    Console.WriteLine("You win");
  }
  break;

ケース 2 では、乱数が 2 の場合、システム入力 si 変数を paper に設定していることを確認します。その後、Console.WriteLine("Computer chose Paper") を使用してコンソールに書き込みます。これは、コンピューターが紙を選択した画面に印刷されます。

次に、if 条件を使用して、ユーザーが選択のために入力した内容を確認しました。if (ui == "Rock"||ui == "rock") ステートメントは、もしユーザーが rock も入力したなら、ユーザーが負けることをチェックし、そのことを Console.WriteLine("\nYou Lose!"); によってスクリーンにプリントします。

そうでない場合は、else if(ui == "Paper"||ui == "paper") でロックされていないかどうかを確認します。ユーザーが入力したのは紙ですか。はいの場合、それは引き分けです。そして、それは Console.WriteLine("It is a draw"); によって印刷されます。

ユーザーがチェックした両方のオプションを入力しなかった場合、ユーザーがはさみを入力したことは明らかであるため、ユーザーはゲームに勝ちます。そのため、最後に else を使用しました。これは Console.WriteLine("You win"); によって出力されます。

break ステートメントは、switch() を終了するために使用されます。

case 3:
  si = "Scissors";
  Console.WriteLine("Computer chose Scissors");
  if (ui == "Rock" || ui == "rock") {
    Console.WriteLine("\nYou Win!");
  } else if (ui == "Paper" || ui == "paper") {
    Console.WriteLine("You Lose");
  } else {
    Console.WriteLine("It is a draw");
  }
  break;

ケース 3 では、乱数が 3 の場合、システム入力 si 変数をはさみに設定することを確認します。その後、コンピュータがはさみを選択した画面に印刷される Console.WriteLine("Computer chose Scissors") という行を書き、コンピュータがハサミを選んだことを画面に表示します。

次に、if 条件を使用して、ユーザーが選択のために入力した内容を確認します。if (ui == "Rock"||ui == "rock") 行は、ユーザーがロックも入力したかどうかをチェックし、ユーザーが勝ったら Console.WriteLine("\nYou Win!"); の行でスクリーンにプリントされます。

そうでない場合は、else if(ui == "Paper"||ui == "paper") 行でロックされていないかどうかを確認します。ユーザーが入力したのは紙ですか。yes の場合、ユーザーはゲームに負けます。そして、それは Console.WriteLine("You Lose"); によって印刷されます。

ユーザーがチェックした両方のオプションを入力しなかった場合、ユーザーがはさみを入力したことは明らかであるため、ゲームは引き分けです。そのため、最後に else を使用しました。これは Console.WriteLine("It is a draw"); によって出力されます。

default:
  Console.WriteLine("invalid entry!");
  break;

switch スコープの最後に、default:も使用しました。これは、一致するケースがない場合に実行される一種のデフォルトケースです。r 変数の値が 1 から 3 以外の場合、これは安全上の予防措置です。

次に、画面に invalid entry!と印刷します。Console.WriteLine("invalid entry!"); を使用します。

必要に応じて、乱数変数 r を使用して決定が行われるため、コードで si 変数を作成して使用することはできません。

ユーザーに yes または no と入力してゲームを再度プレイする場合は、次のコードを使用する必要があります。

using System;
namespace Hello_World {
  class Program {
    static void Main(string[] args) {
      bool play = true;
      string q;
      while (play) {
        // all the above code of the game goes here
        Console.WriteLine("\nDo you want to play again?  ");
        q = Console.ReadLine();
        if (q == "yes" || q == "Yes") {
          continue;
        } else if (q == "no" || q == "No") {
          play = false;
        } else {
          Console.WriteLine("invalid entry!\nQuiting...!");
          play = false;
        }
      }
    }
  }
}

while ループで使用される bool タイプの play 変数を作成しました。最初は true に設定されているため、play 変数が false に設定されるまで、ループは無限に実行されます。

すべてのゲームコードを while ループに配置し、その後、Console.WriteLine(" \nDo you want to play again? "); を使用して、ユーザーにもう一度プレイするかどうかを尋ねることができます。ユーザーが入力するものはすべて、q= Console.ReadLine(); という行を使用して q 変数に格納されます。

その後、再び if 条件を使用して、ユーザーが入力した内容を確認します。

if(q=="yes"||q=="Yes") ステートメントは、ユーザーの入力が yes または no に相当するかどうかをチェックします。ユーザーが yes を入力した場合、continue ステートメントを使用して残りのループステートメントをスキップし、ループを最初から開始します。

ユーザーが yes を入力せず、代わりに no を入力した場合、条件 else if(q=="no"||q=="No") が true になり、play 変数は次のようになります。play=false; の行で false に設定すると、ループが停止し、プログラムが終了します。

また、ユーザーが yes または no 以外の何かを入力した場合は、Console.WriteLine("invalid entry!\nQuiting...!"); によって invalid entry! がスクリーンに表示されます。そして、play は再び false になり、プログラムは終了します。

完全なソースコード:

using System;

namespace Hello_World {
  class Program {
    static void Main(string[] args) {
      bool play = true;
      string q;
      while (play) {
        string ui, si;
        int r;
        Console.Write("What do you choose?\n\n Rock/ Paper/ Scissors? ");
        ui = Console.ReadLine();
        Random rnd = new Random();
        r = rnd.Next(1, 4);
        switch (r) {
          case 1:
            si = "Rock";
            Console.WriteLine("Computer chose Rock");
            if (ui == "Rock" || ui == "rock") {
              Console.WriteLine("\nIt is a draw");
            } else if (ui == "Paper" || ui == "paper") {
              Console.WriteLine("\nYou Win!");
            } else {
              Console.WriteLine("\nYou Lose!");
            }
            break;
          case 2:
            si = "Paper";
            Console.WriteLine("Computer chose Paper");
            if (ui == "Rock" || ui == "rock") {
              Console.WriteLine("\nYou Lose!");
            } else if (ui == "Paper" || ui == "paper") {
              Console.WriteLine("It is a draw");
            } else {
              Console.WriteLine("You win");
            }
            break;
          case 3:
            si = "Scissors";
            Console.WriteLine("Computer chose Scissors");
            if (ui == "Rock" || ui == "rock") {
              Console.WriteLine("\nYou Win!");
            } else if (ui == "Paper" || ui == "paper") {
              Console.WriteLine("You Lose");
            } else {
              Console.WriteLine("It is a draw");
            }
            break;
          default:
            Console.WriteLine("invalid entry!");
            break;
        }
        Console.WriteLine("\nDo you want to play again?  ");
        q = Console.ReadLine();
        if (q == "yes" || q == "Yes") {
          continue;
        } else if (q == "no" || q == "No") {
          play = false;
        } else {
          Console.WriteLine("invalid entry!\nQuiting...!");
          play = false;
        }
      }
    }
  }
}