목차
C#과 유니티로 만드는 MMORPG 게임 개발 시리즈
25.07.23
Part 1: C# 기초 프로그래밍 입문
섹션 3. 코드의 흐름 제어
if와 else
: if문의 조건이 true일 때, 명령문을 실행한다. --> 위에서부터 순차적으로 조건을 확인하고, 조건에 충족하면 명령문을 실행하며 그 아래의 조건들은 건너뛴다.
if (조건문)
{
명령문
}
else if (조건문)
{
명령문
}
else
{
명령문
}
switch
: switch의 조건식으로는 정수(int, bool, char) 또는 문자열(string) 타입만 사용 가능하다. --> C# 7.0 이상부터는 다른 객체도 넣을 수 있게 되었다.
- 'default'를 사용하면 모든 case에 해당되지 않을 때 필요한 명령을 실행할 수 있다.
- case 값은 변수가 될 수 없다. 즉, 고정된 값인 상수여야한다.
switch (조건식)
{
case 값:
명령문
break;
case 값:
명령문
break;
default:
명령문
break;
}
if 및 switch 문 - 실행할 코드 경로 선택 - C# reference
'if' 및 'switch' 문은 C#에서 분기 논리를 제공합니다. 'if, 'else' 및 'switch'를 사용하여 프로그램이 따르는 경로를 선택합니다.
learn.microsoft.com
※ 삼항연산자
condition ? consequent : alternative
// 조건 ? 맞을 때 : 틀릴 때
- condition 식은 true 또는 false로 계산되어야 합니다.
- condition이 true : consequent 식이 계산되고 해당 결과가 연산 결과가 됩니다.
- condition이 false : alternative 식이 계산되고 해당 결과가 연산 결과가 됩니다.
?: 연산자 - 3개로 구성된 조건 연산자 - C# reference
부울 식의 결과를 기반으로 두 식 중 하나의 결과를 반환하는 3개로 구성된 C# 조건 연산자(`?:`)에 대해 알아봅니다.
learn.microsoft.com
가위-바위-보 게임
- 0: 가위, 1: 바위, 2: 보
- 컴퓨터는 랜덤으로 가위, 바위, 보 중에 하나를 내도록
- 사용자의 입력을 받아 가위, 바위, 보 중에 하나를 내도록
- 컴퓨터의 랜덤 값과 사용자의 입력에 따라 승리, 패배, 무승부를 판단하여 결과를 출력
>> 컴퓨터가 랜덤한 값을 내도록
: Random 클래스를 활용 --> Next(a, b); 는 a 이상 b 미만의 값을 랜덤으로 반환한다.
Random rand = new Random();
int aiChoice = rand.Next(0, 3);
>> 사용자의 입력을 받기
: 'Console.ReadLine();'로 입력을 받은 후, 받은 값을 int로 변환시켜준다.
int choice = Convert.ToInt32(Console.ReadLine());
// int choice = int.Parse(Console.ReadLine());
>> 컴퓨터와 사용자가 각각 낸 것을 출력
: switch문을 활용
switch (choice)
{
case 0:
Console.WriteLine("당신의 선택은 가위입니다.");
break;
case 1:
Console.WriteLine("당신의 선택은 바위입니다.");
break;
case 2:
Console.WriteLine("당신의 선택은 보입니다.");
break;
}
switch (aiChoice)
{
case 0:
Console.WriteLine("컴퓨터의 선택은 가위입니다.");
break;
case 1:
Console.WriteLine("컴퓨터의 선택은 바위입니다.");
break;
case 2:
Console.WriteLine("컴퓨터의 선택은 보입니다.");
break;
}
>> 결과 출력
: if문을 활용
if (choice == aiChoice)
{
Console.WriteLine("무승부입니다.");
}
else if (choice == 0 && aiChoice == 2)
{
Console.WriteLine("승리입니다.");
}
else if (choice == 1 && aiChoice == 0)
{
Console.WriteLine("승리입니다.");
}
else if (choice == 2 && aiChoice == 1)
{
Console.WriteLine("승리입니다.");
}
else
{
Console.WriteLine("패배입니다.");
}
>> 최종 코드
namespace First
{
class Program
{
static void Main(string[] args)
{
// 0: 가위, 1: 바위, 2: 보
Random rand = new Random();
int aiChoice = rand.Next(0, 3);
int choice = Convert.ToInt32(Console.ReadLine());
switch (choice)
{
case 0:
Console.WriteLine("당신의 선택은 가위입니다.");
break;
case 1:
Console.WriteLine("당신의 선택은 바위입니다.");
break;
case 2:
Console.WriteLine("당신의 선택은 보입니다.");
break;
}
switch (aiChoice)
{
case 0:
Console.WriteLine("컴퓨터의 선택은 가위입니다.");
break;
case 1:
Console.WriteLine("컴퓨터의 선택은 바위입니다.");
break;
case 2:
Console.WriteLine("컴퓨터의 선택은 보입니다.");
break;
}
if (choice == aiChoice)
{
Console.WriteLine("무승부입니다.");
}
else if (choice == 0 && aiChoice == 2)
{
Console.WriteLine("승리입니다.");
}
else if (choice == 1 && aiChoice == 0)
{
Console.WriteLine("승리입니다.");
}
else if (choice == 2 && aiChoice == 1)
{
Console.WriteLine("승리입니다.");
}
else
{
Console.WriteLine("패배입니다.");
}
}
}
}
상수와 열거형
>> 상수
: 상수는 해당 값이 컴파일 시간에 설정되며 변경할 수 없는 필드로, 'const'를 붙여 사용한다.
--> 상수를 사용하여 특수 값에 대해 숫자 리터럴(“매직 넘버”) 대신 의미 있는 이름을 제공할 수 있다.
--> 하드코딩을 방지하고 코드 수정이 용이해지는 장점이 있다.
const int SCISSORS = 0;
const int ROCK = 1;
const int PAPER = 2;
상수 정의 방법 - C#
컴파일 시간에 값이 설정되는 필드인 C#에서 상수를 정의하는 방법에 대해 알아봅니다. 상수를 사용하여 특수 값에 의미 있는 이름을 제공합니다.
learn.microsoft.com
>> 열거형
: 열거형은 기본 정수 숫자 형식의 명명된 상수 집합에 의해 정의된 값 형식이다. 열거형 형식을 정의하려면 키워드를 enum 사용하고 열거형 멤버의 이름을 지정한다. --> 열거형을 선언할 때는 main 함수 밖에, class 안에 선언한다.
- 서로 연관성이 있는 여러 값을 하나로 묶을 수 있는 장점이 있다.
- 값을 따로 지정하지 않으면 기본적으로 0부터 1씩 증가하며 지정된다.
enum Choice
{
Rock = 1,
Paper = 2,
Scissors = 0
}
--> case에서 사용할 때, 지정된 값이 int가 아니라 enum이기 때문에 int로 형변환을 시켜줘야 한다.
switch (choice)
{
case (int)Choice.Scissors:
Console.WriteLine("당신의 선택은 가위입니다.");
break;
case (int)Choice.Rock:
Console.WriteLine("당신의 선택은 바위입니다.");
break;
case (int)Choice.Paper:
Console.WriteLine("당신의 선택은 보입니다.");
break;
}
열거형 형식 - C# reference
선택 항목 또는 선택 항목의 조합을 나타내는 C# 열거형 형식에 대해 알아봅니다.
learn.microsoft.com
'Development > Group Study' 카테고리의 다른 글
| [Part 1] 섹션 4. TextRPG (1) | 2025.07.26 |
|---|---|
| [Part 1] 섹션 3. 코드의 흐름 제어(2) (3) | 2025.07.25 |
| [Part 1] 섹션 2. 데이터 갖고 놀기 (4) | 2025.07.23 |