본문 바로가기
밑바닥부터 시작하는 게임 개발/C++

[밑바닥 C++] 5. 가위바위보 게임으로 알아보는 분기문(if)

by KK1 2021. 8. 16.

분기문 (조건문)

논리(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

반응형

댓글