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

Saad Aslam 2023年10月12日
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;
        }
      }
    }
  }
}
著者: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn