728x90

안녕하세요!
이번 글에서는 C# 콘솔을 이용하여 가위바위보 게임을 만들어 보겠습니다.
가위바위보 게임은 컴퓨터와 사용자 간의 대결로서 간단하면서도 재미있는 프로그램입니다.
사용자가 가위, 바위, 보 중 하나를 선택하고, 컴퓨터도 랜덤으로 가위, 바위, 보 중 하나를 선택하여 승패를 판단합니다.
<예제 코드>
using System;
class Program
{
static void Main()
{
string[] choices = { "가위", "바위", "보" };
Console.WriteLine("가위바위보 게임을 시작합니다.");
Console.WriteLine("종료 : 0, 가위: 1, 바위: 2, 보: 3");
while (true)
{
Console.Write("선택하세요 (0~3): ");
string input = Console.ReadLine();
if (input == "0")
break;
if (input == "1" || input == "2" || input == "3")
{
int userChoice = int.Parse(input);
int computerChoice = GetComputerChoice();
Console.WriteLine("사용자: " + choices[userChoice - 1]);
Console.WriteLine("컴퓨터: " + choices[computerChoice - 1]);
int result = DetermineWinner(userChoice, computerChoice);
if (result == 0)
{
Console.WriteLine("비겼습니다!");
}
else if (result == 1)
{
Console.WriteLine("사용자 승리!");
}
else
{
Console.WriteLine("컴퓨터 승리!");
}
Console.WriteLine();
}
else
{
Console.WriteLine("잘못된 입력입니다. 다시 선택하세요.");
}
}
}
static int GetComputerChoice()
{
Random random = new Random();
return random.Next(1, 4);
}
static int DetermineWinner(int userChoice, int computerChoice)
{
if (userChoice == computerChoice)
{
return 0; // 비김
}
else if ((userChoice == 1 && computerChoice == 3) ||
(userChoice == 2 && computerChoice == 1) ||
(userChoice == 3 && computerChoice == 2))
{
return 1; // 사용자 승리
}
else
{
return -1; // 컴퓨터 승리
}
}
}
<코드 해석>
string[] choices = { "가위", "바위", "보" };
- 사용자와 컴퓨터의 선택지인 가위, 바위, 보를 배열에 저장합니다.
Console.WriteLine("가위바위보 게임을 시작합니다.");
- 게임의 시작을 알리는 메시지를 출력합니다.
Console.WriteLine("가위: 1, 바위: 2, 보: 3");
- 사용자가 선택할 수 있는 가위, 바위, 보에 대한 안내 메시지를 출력합니다.
while (true) { ... }
- 무한 루프를 시작합니다.
- 사용자가 게임종료를 선택할 때까지 계속 반복됩니다.
Console.Write("선택하세요 (1~3): ");
- 사용자에게 선택하라는 안내 메시지를 출력합니다.
string input = Console.ReadLine();
- 사용자의 입력을 읽어와서 변수 input에 저장합니다.
if (input == "0")
break;
- 사용자의 입력이 0 이면 아래 코드를 진행하기 전에 즉시 루프를 빠져 나옵니다.
if (input == "1" || input == "2" || input == "3") { ... }
- 사용자의 입력이 1, 2, 3 중 하나인지 확인한 후 참이면 중괄호 내에있는 코드를 실행합니다.
int userChoice = int.Parse(input);
- 사용자의 선택을 정수로 변환하여 userChoice 변수에 저장합니다.
int computerChoice = GetComputerChoice();
- GetComputerChoice 메서드를 호출하여 컴퓨터의 선택을 랜덤하게 받아옵니다.
Console.WriteLine("사용자: " + choices[userChoice - 1]);
- 사용자의 선택을 출력합니다.
Console.WriteLine("컴퓨터: " + choices[computerChoice - 1]);
- 컴퓨터의 선택을 출력합니다.
int result = DetermineWinner(userChoice, computerChoice);
- DetermineWinner 메서드를 호출하여 승패를 판단합니다.
if (result == 0)
{
Console.WriteLine("비겼습니다!");
}
- 비겼을 경우의 조건문입니다.
- 비겼음을 알리는 메시지를 출력합니다.
else if (result == 1)
{
Console.WriteLine("사용자 승리!");
}
- 사용자가 승리한 경우의 조건문입니다.
- 사용자가 승리했음을 알리는 메시지를 출력합니다.
else
{
Console.WriteLine("컴퓨터 승리!");
}
- 컴퓨터가 승리한 경우의 조건문입니다.
- 컴퓨터가 승리했음을 알리는 메시지를 출력합니다.
Console.WriteLine();
- 한 줄을 띄어서 다음 게임을 위해 준비합니다.
else
{
Console.WriteLine("잘못된 입력입니다. 다시 선택하세요.");
}
- 앞의 if조건문의 조건식이 참이 아닌경우 사용자가 잘못된 입력을 한것이므로사용자에게 다시 선택하라는 메시지를 출력합니다.
static int GetComputerChoice()
{
Random random = new Random();
return random.Next(1, 4);
}
- 컴퓨터의 선택을 랜덤하게 반환하는 GetComputerChoice 메서드입니다.
- 랜덤한 정수를 생성하여 1부터 3 사이의 값을 반환합니다.
static int DetermineWinner(int userChoice, int computerChoice)
{
if (userChoice == computerChoice)
{
return 0; // 비김
}
else if ((userChoice == 1 && computerChoice == 3) ||
(userChoice == 2 && computerChoice == 1) ||
(userChoice == 3 && computerChoice == 2))
{
return 1; // 사용자 승리
}
else
{
return -1; // 컴퓨터 승리
}
}
- 사용자의 선택과 컴퓨터의 선택을 비교하여 승패를 판단하는 DetermineWinner 메서드입니다.
- 사용자와 컴퓨터의 선택이 같을 경우 비김을 의미하는 0을 반환합니다.
- 사용자가 이기는 경우를 나타내는 조건문입니다. 각각 가위(1)로 이기는 경우, 바위(2)로 이기는 경우, 보(3)로 이기는 경우를 처리합니다. 이긴 경우 1을 반환합니다.
- 비기지도 이기지도 않은 경우 컴퓨터가 이긴 것을 의미하는 -1을 반환합니다.
이 예제를 실행하면 사용자에게 가위, 바위, 보 중에서 선택하라는 메시지가 출력되고, 사용자의 선택과 컴퓨터의 랜덤한 선택을 비교하여 승패를 결정합니다.
승패에 따라 결과를 출력하고, 사용자가 게임을 계속할지 여부를 선택할 수 있습니다.
이를 통해 사용자 입력, 랜덤한 값 생성, 조건문을 활용하여 게임의 진행과 승패를 판단하는 프로그램을 작성하는 방법을 이해할 수 있습니다.
감사합니다!
728x90
'[C#] > 콘솔 프로그래밍' 카테고리의 다른 글
| [C#] 콘솔 프로그래밍 : 길찾기 게임 (26) | 2023.07.11 |
|---|---|
| [C#] 콘솔 프로그래밍 : 요일 판단 (20) | 2023.07.10 |
| [C#] 콘솔 프로그래밍 : 사칙연산 계산기 (13) | 2023.07.05 |
| [C#] 콘솔 프로그래밍 : 시험점수 평균계산 (31) | 2023.07.03 |
| [C#] 콘솔 프로그래밍 : 난수 맞히기 (13) | 2023.07.02 |