분기문 (조건문)
논리(bool)를 통해 코드의 흐름을 나누는 문법입니다.
프로그래머로 살아간다면 가장 많이 사용하게 될 코드중 하나입니다.
if문
if (조건)
{
// 위 조건이 참(true)일 때 수행되는 코드
}
if문은 괄호안의 조건(논리)에 따라 그 내부의 코드가 실행될지 결정하는 코드입니다.
몇가지 예제와 함께 알아보겠습니다.
예제 1) NumA가 NumB보다 작으니까 참(true). 화면에 아래 코드의 문구를 출력합니다.
int NumA = 10, NumB = 20;
if (NumA < NumB)
{
cout << "Num A는 Num B보다 작다" << endl;
}
두 변수를 비교하여 true일 경우 if문 내부의 코드가 실행됩니다.
예제 2) 거짓(false) 임으로 출력하지않습니다.
if (false)
{
cout << "문자 출력!" << endl;
}
if문의 내용이 false 또는 0일 경우 거짓(false)로 인식합니다. 내부의 코드가 실행되지 않습니다.
예제 3) 0이 아닌 모든 수는 참(true)으로 인식합니다. 문구를 출력합니다.
if (0.1)
{
cout << "0을 제외한 모든 값은 참으로 인식합니다." << endl;
}
0을 제외한 어떠한 숫자가 if문에 들어오면 참으로 인식합니다.
else if문
if (조건A)
{
// 위 조건A가 참(true)일 때 수행되는 코드
}
else if (조건B)
{
// 조건A는 거짓(false)이고 조건B가 참(true)일 때 수행되는 코드
}
else if문은 if문은 거짓이지만 다른 조건(else if)에 대해 그 내용이 실행될지 결정하는 코드입니다.
예제) NumA는 NumB보다 작다는 거짓(false)
다른 조건(else if) NumA는 NumB보다 크니까 참(true). 문구 출력를 출력합니다.
int NumA = 50, NumB = 30;
if (NumA < NumB)
{
cout << "Num A는 Num B보다 작다" << endl;
}
else if (NumA > NumB)
{
cout << "Num A는 Num B보다 크다" << endl; // 출력
}
위 조건엔 맞지 않지만 아래의 조건에 충족하기 때문에 아래의 else if문의 내용이 실행됩니다.
else문
if (조건A)
{
// 위 조건A가 참(true)일 때 수행되는 코드
}
else if (조건B)
{
// 조건A는 거짓(false)이고 조건B가 참(true)일 때 수행되는 코드
}
else
{
// 위의 두 조건 모두 거짓(false)이면 실행되는 코드
}
else문은 if, else if문이 모두 거짓일 때 그 내용을 실행하는 코드입니다.
예제) NumA는 NumB보다 작다는 거짓(false), 크다 또한 거짓(false), 그 외 else의 문구를 출력합니다.
int NumA = 50, NumB = 50;
if (NumA < NumB)
{
cout << "Num A는 Num B보다 작다" << endl;
}
else if (NumA > NumB)
{
cout << "Num A는 Num B보다 크다" << endl;
}
else
{
cout << "Num A는 Num B와 같다" << endl; // 출력
}
위 두 조건 모두 만족하지 않기 때문에 else문의 내용이 실행됩니다.
이제 if, else if, else 문을 이용해서 간단한 가위바위보 게임을 만들어 보겠습니다.
가위, 바위, 보는 숫자 각각 숫자 1, 2, 3으로 표현해보겠습니다.
먼저 플레이어(Player)와 적(Enemy)에 대한 변수를 선언합니다.
그리고 플레이어는 가위, 바위, 보 중에서 입력을 받도록 코드를 작성합니다.
// 1은 가위, 2는 바위, 3은 보
int Player = 0; // 플레이어는 0 초기화
int Enemy = 1; // 적은 현재 가위만 낼 줄 안다.
cout << "(1) 가위 (2) 바위 (3) 보" << endl;
cin >> Player;
적은 현재 가위만 낼 수 있습니다. 플레이어는 직접 사용자가 입력하는 것을 낼 수 있습니다.
이제 두 조건을 잘 활용하여 승패를 가려보겠습니다.
if (Player == Enemy)
{
cout << "무승부!!!" << endl;
}
else if (Player == 1)
{
cout << "무승부!!!" << endl;
}
else if (Player == 2)
{
cout << "플레이어 승리!!!" << endl;
}
else if (Player == 3)
{
cout << "플레이어 패배ㅠㅠ" << endl;
}
else
{
cout << "잘못 된 입력을 하였습니다" << endl;
}
우리는 적이 현재 무엇을 내는지 알 수 있기 때문에 간단하게 위와 같이 작성하였습니다.
추후 적이 다양한 패턴을 내게 된다면 플레이어가 낸 결과에 따라 각각 비교해야할 것 입니다.
이전편
[밑바닥부터 시작하는 게임 개발/C++] - [밑바닥 C++] 4. 컴퓨터 친화적인 비트 연산자 + 축약, 증감 연산자
다음편
[밑바닥부터 시작하는 게임 개발/C++] - [밑바닥 C++] 6. 여러 흐름의 분기문 switch, 어디로든 튀는 goto
'밑바닥부터 시작하는 게임 개발 > C++' 카테고리의 다른 글
[밑바닥 C++] 7. 가위바위보도 삼세판! 반복문 (0) | 2022.02.05 |
---|---|
[밑바닥 C++] 6. 여러 흐름의 분기문 switch, 어디로든 튀는 goto (0) | 2021.08.29 |
[밑바닥 C++] 4. 컴퓨터 친화적인 비트 연산자 + 축약, 증감 연산자 (2) | 2021.07.17 |
[밑바닥 C++] 3. HP 등 값을 조작하는 연산자, 변하지 않는 값 상수 (0) | 2021.07.11 |
[밑바닥 C++] 2. HP 표기 등을 위한 변수 (0) | 2021.07.10 |
댓글