C# 유니티 상수와 열거형, 가위바위보 게임 코드 개선
지난번에 하드코딩으로 만든 가위바위보 게임을 상수와 열거형을 사용해 개선해보겠습니다.
가위바위보 게임 만들기 글은 가장 아래 링크를 첨부하겠습니다.
우선 0,1,2로 구분한 가위바위보에 이름을 붙여줄 예정입니다.
아래는 코드 1은 이전에 만든 가위바위보 게임입니다.
그 아래 2에서는 코드를 개선해보겠습니다.
코드. 1
static void Main(string[] args) { Random rand = new Random(); int ai = rand.Next(0, 3); int me = Convert.ToInt32(Console.ReadLine()); switch (me) { case 0: Console.WriteLine("가위") break; case 1: Console.WriteLine("바위") break; case 2: Console.WriteLine("보") break; } switch (ai) { case 0: Console.WriteLine("컴퓨터 가위") break; case 1: Console.WriteLine("컴퓨터 바위") break; case 2: Console.WriteLine("컴퓨터 보") break; } // 무승부 승리 패배 판별 if (me == 0) { if (ai == 0) { Console.WriteLine("무승부"); } else if (ai == 1) { Console.WriteLine("패배"); } else { Console.WriteLine("승리"); } } else if (me == 1) { if (ai == 0) { Console.WriteLine("승리"); } else if (ai == 1) { Console.WriteLine("무승부"); } else { Console.WriteLine("패배"); } } else if (me == 2) { if (ai == 0) { Console.WriteLine("패배"); } else if (ai == 1) { Console.WriteLine("승리"); } else { Console.WriteLine("무승부"); } } } } |
아래 코드 2에서는 우선 Rock, Scissors, Paper을 변수로 만들겠습니다.
변수로 바꾸게 되면 나중에 Rock, Scissors, Paper 중 수정사항이 있을 때 일일히이 모두 바꾸지 않고 변수만 바꿔주면 되니까 편리하겠죠?
코드. 2
static void Main(string[] args) { int Scissors = 0; int Rock = 1; int Paper = 2; Random rand = new Random(); int ai = rand.Next(0, 3); int me = Convert.ToInt32(Console.ReadLine()); switch (me) { case Scissors: Console.WriteLine("가위") break; case Rock: Console.WriteLine("바위") break; case Paper: Console.WriteLine("보") break; } ...... ...... |
다만 이럴 경우 스위치 문에서 에러가 발생하게 됩니다.
스위치 문에서는 변수로 선언된 것을 사용할 수 없습니다.
이럴 경우 변수를 고정시켜 다시는 바꾸지 않겠다는 의미로 const를 사용하면 됩니다.
코드. 3
static void Main(string[] args) { const int Scissors = 0; const int Rock = 1; const int Paper = 2; Random rand = new Random(); int ai = rand.Next(0, 3); ...... ...... else { Console.WriteLine("무승부"); } } } } |
const와 같이 상수를 사용한다면 열거형을 사용해 코드를 더 간단하게 만들 수 있는데요.
바로 Enum을 사용하는 것 입니다.
Enum 이란?
Enum(열거형)은 값을 입력하는 과정에서 실수를 방지하기 위해 사용합니다. 열거형은 const 처럼 일일이 선언하지 않아도 됩니다. 배열처럼 0,1,2,3...으로 구분할 수 있기 때문에 코드가 훨씬 깔끔해집니다.
코드. 4
enum Choice { Scissors = 0, Rock = 1, Paper = 2 } static void Main(string[] args) { Random rand = new Random(); int ai = rand.Next(0, 3); int me = Convert.ToInt32(Console.ReadLine()); switch (me) { case (int)Choice.Scissors: Console.WriteLine("가위") break; case (int)Choice.Rock: Console.WriteLine("바위") break; case (int)Choice.Paper: Console.WriteLine("보") break; } ...... ...... |
다만, 위 코드에서는 인트로 형 변환을 할 필요가 있기 때문에 사용할 때 (int)Choice. 으로 enum을 호출해주면 됩니다.
아래는 가위바위게임 만들기 1편 링크입니다.
c# 조건문을 활용한 가위바위보 게임 만들기
c# 조건문에 대한 간략한 설명과 조건문을 활용한 간단한 게임을 만들어보겠습니다. 우선 조건문에 대해 정리해봅니다. 1. if if 문은 특정 조건식을 판별해 true 일 경우 실행하고 false일 경우 실행
drakon.tistory.com