C#

조건문

게임만드는학생 2025. 1. 18. 17:16

 

조건문은 특정조건에서 무언가를 해야할 때 사용하는 문법이다. 

 

먼저 if문이다. 

 

if(조건) 
{
}

다음과 같이 사용하며 조건이 참이 됐을 때, 대괄호 안의 코드가 실행된다. 

그렇다면 조건이 거짓일 때, 실행하고 싶은 코드가 있다면

else if(조건)
{
}
else
{
}

위 코드처럼 else if를사용해 위쪽 조건이 거짓이더라도 다른 조건으로 다시 참 거짓을 판별하거나 

else를 이용해 위 if나 else if 조건이 다 거짓일 때 실행하고 싶은 코드를 추가하면 된다. 

 

코드를 작성하다보면 조건이 아주 복잡해지거나 여러 경우의 수를 다뤄야 하는 경우가 있다. 

예를 들어 가위바위보만 해도 9가지의 경우의 수를 다루는데, 이를 전부 if-else 문으로 작성한다면 코드가 아주 복잡해진다.

if(가위를 냈을 때)
{
	if(상대가 보)
    {
    }
    else if(상대가 바위)
    {}
    else
    {}
}
else if(주먹을 냈을 때)
{
}...

위 코드처럼 아주 복잡해지는데 이 때 사용할 수 있는 문법이 있다.

 

switch라는 문법이다. 

 

switch(변수)
{
	case 값: 내용
    break;
    case 값 : 내용
    break;
    
    default: 내용
    break;

}

위처럼 사용하면 된다. 

 

예를 들면,

// 0 : 가위, 1 : 바위, 2 : 보
int type = 0;

switch(type)
{
	case 0: 가위출력 break;
    case 1: 바위출력 break;
    case 2: 보출력 break;
}

위 코드처럼 사용이 가능하다. 

만약 break를 사용하지 않는다면 그 다음 줄까지 실행되니 break를 까먹으면안된다. 

그리고 default는 else문처럼 위 case조건이 전부 아닐 때 실행하는 코드이다. 

 

그런데 위 코드는 하드코딩으로 숫자를 직접 입력했지만 프로그램 규모가 커지면 이런 하드코딩방식은 많은 문제를 발생시킬 수 있다. 

이 때, 상수나 열거형(enum) 을 사용한다. 

 

const int rock = 1;
const int sissor = 2;
const int paper = 3;

const 는 상수를 뜻하며, 이후로 값을 바꿀수 없다. 

스위치문에서 0,1,2를 직접 입력하는 대신 rock, sissor,paper를 입력하면 나중에 가독성도 높이고, 값을 변경하고 싶을 때, 

정의된 const문을 찾아 한줄만 고치면 되기 때문에 유지보수에도 유리하다. 

 

다음은 열거형이다. 

enum Type
{
	ROCK,
    SISSOR,
    PAPER
}

위 처럼 정의할 수 있다. 

 

Type.ROCK

그리고 사용할 때는 정의한 열거형의 이름.값 으로 접근한다. 

 

switch에 적용하면

// 0 : 가위, 1 : 바위, 2 : 보
int type = 0;

switch(type)
{
	case (int)Type.SISSOR: 가위출력 break;
    case (int)Type.ROCK: 바위출력 break;
    case (int)Type.PAPER: 보출력 break;
}

위 처럼 적용할 수 있는데, 이 때, 열거형값은 정수가 아니기 때문에 int로 캐스팅을 해야한다. 

 

다음은 삼항 연산자이다. 

 

(조건) ? 참일 때 : 거짓일 때

위 처럼 사용한다. 

 

(level >= 10) ? 이동 : 이동불가;

이런식으로 사용이 가능하다.