C#으로 가위바위보 게임 만들기

Saad Aslam 2023년10월12일
C#으로 가위바위보 게임 만들기

이 기사에서는 C#으로 가위바위보 게임을 개발하는 과정에 대해 이야기할 것입니다. Visual Studio를 사용하여 콘솔 앱, 이름 및 프로젝트를 만듭니다.

C#에서 가위바위보 게임 만들기

이 게임을 만들려면 다음 단계를 따르십시오.

  • 사용자로부터 입력을 받습니다.
  • 무작위로 출력을 생성합니다.
  • 가능한 모든 선택을 비교하십시오.
  • 승자를 선언합니다.
  • 게임을 다시 시작합니다.

이 프로그램의 작동에는 다양한 기능과 방법이 포함됩니다. 사용자의 입력이 수신되면 시스템은 이를 시스템에서 생성된 입력과 비교합니다.

이 시스템에서 생성된 입력은 무작위입니다. 따라서 바위, 종이 또는 가위의 세 가지 옵션 중 하나를 제공할 수 있습니다. 두 입력을 모두 받으면 조건부 렌더링을 수행합니다.

조건부 렌더링은 승자 발표 여부와 무승부 여부를 결정하는 기반이 되어 추첨을 진행합니다.

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는 사용자 입력과 시스템 입력을 문자열로 사용하는 두 개의 변수이므로 사용자는 원하는 완전한 철자를 입력해야 합니다. r 변수는 컴퓨터가 선택 항목에 대해 생성할 난수에 대해 만든 정수 유형 변수입니다.

Console.Write("What do you choose?\n\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인지 확인하고 그렇다면 시스템 입력 si를 설정합니다. 바위에 대한 변수.

그 후, 컴퓨터가 rock을 선택했다는 화면을 출력하는 Console.WriteLine("Computer selected Rock") 문을 사용하여 콘솔에 작성합니다. 그런 다음 if 조건을 사용하여 사용자가 선택 항목에 입력한 내용을 확인합니다.

if (ui == "Rock"||ui == "rock") 문은 사용자가 rock에도 입력했는지 확인하면 무승부이며 Console.WriteLine("\nIt is a draw"). 그렇지 않은 경우 else if(ui == "Paper"||ui == "paper")로 확인하여 바위가 아닌 경우 사용자가 입력한 종이인지 확인합니다.

인 경우 사용자가 승리했으며 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 변수를 종이로 설정합니다. 그 후, 컴퓨터가 종이를 선택한 화면에 인쇄하는 Console.WriteLine("Computer choose 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 selected Scissors") 줄을 콘솔에 씁니다.

그런 다음 if 조건을 사용하여 사용자가 선택 항목에 입력한 내용을 확인합니다. if (ui == "Rock"||ui == "rock") 행은 사용자가 rock에도 입력했는지 확인하면 사용자가 승리하고 Console.WriteLine("\nYou Win!"); 선.

그렇지 않은 경우 else if(ui == "Paper"||ui == "paper") 행으로 확인하여 바위가 아닌지 확인합니다. 그러면 사용자가 입력한 종이입니까? 인 경우 사용자는 게임을 잃게 됩니다. 그리고 Console.WriteLine("You Lose");에 의해 인쇄됩니다. 선.

사용자가 우리가 확인한 두 가지 옵션을 모두 입력하지 않으면 사용자가 가위를 입력한 것이 분명하므로 게임은 무승부입니다. 그래서 마지막에 else를 사용했고 Console.WriteLine("It is draw");에 의해 인쇄됩니다.

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

switch 범위의 끝에서 일치하는 케이스가 없을 때 실행되는 일종의 기본 케이스인 default:도 사용했습니다. r 변수에 1~3이 아닌 다른 값이 있는 경우 이는 안전 예방 조치입니다.

그런 다음 화면에 invalid entry!를 인쇄합니다. Console.WriteLine("잘못된 항목!");을 사용합니다.

원하는 경우 결정이 난수 변수 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를 제외한 다른 항목을 입력했다면 invalid entry! Console.WriteLine("invalid entry!\nQuiting...!");에 의해 화면에 인쇄됩니다. 그리고 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