namespace CSharpGrammar
{
// 상수와 열거형
// 0,1,2로 된 부분을 보기가 싫다.
// 숫자를 넣는것은 프로그램이 커질 수록 사용하면 안된다.
enum Choice
{
ROCK = 1, // 바위
PAPER = 2, // 보
SCISSORS = 0 // 가위
}
class Program
{
static void Main(string[] args)
{
// const 상수의 개념 바꾸지 않겠다라는 의미
// 사용하면 변경 불가
// 가위바위보 개선 (1)
const int ROCK = 1;
const int PAPER = 2;
const int SCISSORS = 0;
Random rand = new Random();
int aiChoice = rand.Next(0, 3); // 0 ~ 2 사이의 랜덤 값
int choice = Convert.ToInt32(Console.ReadLine());
switch (choice)
{
case (int)Choice.SCISSORS:
Console.WriteLine("당신의 선택은 가위입니다");
break;
case (int)Choice.ROCK:
Console.WriteLine("당신의 선택은 바위입니다");
break;
case (int)Choice.PAPER:
Console.WriteLine("당신의 선택은 보입니다");
break;
}
switch (aiChoice)
{
case (int)Choice.SCISSORS:
Console.WriteLine("컴퓨터의 선택은 가위입니다");
break;
case (int)Choice.ROCK:
Console.WriteLine("컴퓨터의 선택은 바위입니다");
break;
case (int)Choice.PAPER:
Console.WriteLine("컴퓨터의 선택은 보입니다");
break;
}
if (choice == (int)Choice.SCISSORS)
{
if (aiChoice == (int)Choice.SCISSORS)
{
Console.WriteLine("무승부 입니다.");
}
else if (aiChoice == (int)Choice.ROCK)
{
Console.WriteLine("패배 입니다.");
}
else // aiChoice == (int)Choice.PAPER
{
Console.WriteLine("승리 입니다.");
}
}
else if (choice == (int)Choice.ROCK)
{
if (aiChoice == (int)Choice.SCISSORS)
{
Console.WriteLine("승리 입니다.");
}
else if (aiChoice == (int)Choice.ROCK)
{
Console.WriteLine("무승부 입니다.");
}
else // aiChoice == (int)Choice.PAPER
{
Console.WriteLine("패배 입니다.");
}
}
else // choice == (int)Choice.PAPER
{
if (aiChoice == (int)Choice.SCISSORS)
{
Console.WriteLine("패배 입니다.");
}
else if (aiChoice == (int)Choice.ROCK)
{
Console.WriteLine("승리 입니다.");
}
else // aiChoice == (int)Choice.PAPER
{
Console.WriteLine("무승부 입니다.");
}
}
if (choice == aiChoice)
{
Console.WriteLine("무승부 입니다.");
}
else if (choice == (int)Choice.SCISSORS && aiChoice == (int)Choice.PAPER)
{
Console.WriteLine("승리입니다.");
}
else if (choice == (int)Choice.ROCK && aiChoice == (int)Choice.SCISSORS)
{
Console.WriteLine("승리입니다.");
}
else if (choice == (int)Choice.PAPER && aiChoice == (int)Choice.ROCK)
{
Console.WriteLine("승리입니다.");
}
else
{
Console.WriteLine("패배입니다.");
}
}
}
}
enum Choice
{
ROCK = 1, // 바위
PAPER = 2, // 보
SCISSORS = 0 // 가위
}const int ROCK = 1;
const int PAPER = 2;
const int SCISSORS = 0;Random rand = new Random();
int aiChoice = rand.Next(0, 3); // 0 ~ 2 사이의 랜덤 값Random 객체를 사용하여 0, 1, 2 중 하나의 값을 무작위로 선택함 int choice = Convert.ToInt32(Console.ReadLine());choice에 저장switch (choice)
{
case (int)Choice.SCISSORS:
Console.WriteLine("당신의 선택은 가위입니다");
break;
case (int)Choice.ROCK:
Console.WriteLine("당신의 선택은 바위입니다");
break;
case (int)Choice.PAPER:
Console.WriteLine("당신의 선택은 보입니다");
break;
}switch (aiChoice)
{
case (int)Choice.SCISSORS:
Console.WriteLine("컴퓨터의 선택은 가위입니다");
break;
case (int)Choice.ROCK:
Console.WriteLine("컴퓨터의 선택은 바위입니다");
break;
case (int)Choice.PAPER:
Console.WriteLine("컴퓨터의 선택은 보입니다");
break;
}switch문을 통해 각 선택에 대응하는 메시지를 출력 두 가지 방법으로 결과를 결정하는 예제가 있습니다.
if (choice == (int)Choice.SCISSORS)
{
if (aiChoice == (int)Choice.SCISSORS)
{
Console.WriteLine("무승부 입니다.");
}
else if (aiChoice == (int)Choice.ROCK)
{
Console.WriteLine("패배 입니다.");
}
else // aiChoice == (int)Choice.PAPER
{
Console.WriteLine("승리 입니다.");
}
}
// ... (바위, 보의 경우도 유사하게 작성)if (choice == aiChoice)
{
Console.WriteLine("무승부 입니다.");
}
else if (choice == (int)Choice.SCISSORS && aiChoice == (int)Choice.PAPER)
{
Console.WriteLine("승리입니다.");
}
else if (choice == (int)Choice.ROCK && aiChoice == (int)Choice.SCISSORS)
{
Console.WriteLine("승리입니다.");
}
else if (choice == (int)Choice.PAPER && aiChoice == (int)Choice.ROCK)
{
Console.WriteLine("승리입니다.");
}
else
{
Console.WriteLine("패배입니다.");
}