가위바위보는 역시 삼세판아닐까요? 이전에는 단판으로 끝난 가위바위보를 반복적으로 플레이할 수 있도록 반복문에 대해 알아보겠습니다.
반복문
프로그래밍에서 반복문은 말 그대로 코드를 반복적으로 실행하는 기능을 가진 문법입니다.
간단한 기능의 반복, 게임에서 매 프레임의 반복 등 모두 반복문을 활용하여 구현할 수 있습니다.
반복문에는 일정 횟수를 주로 반복할 때 사용하는 for문, 특정 조건인 동안 지속 반복되는 while문이 대표적입니다.
for 문
먼저 for문을 통하여 일정 횟수 반복하는 간단한 프로그램부터 작성해보겠습니다.
예제) 1부터 5까지 더하는 반복문
int Num = 0;
for (int i = 1; i <= 5; ++i)
{
Num += i;
}
cout << Num << endl;
for문을 사용하여 1부터 5까지 더하는 코드를 작성하였습니다.
for문 내부에 구문들이 어떤 역할을 하는지 보겠습니다.
for문은 위와 같이 세미콜론(;)을 두고 3가지로 구성합니다.
1 - for문 내부에서 사용할 변수를 초기화 합니다. (최초 1회 실행) 2 - for문을 탈출할 조건을 작성합니다. (for문 내부 코드가 끝날 때 마다 체크) 3 - for문이 끝난 후 증감식을 작성합니다. (2번 체크 후 동작, 주로 1의 값을 증감) |
위 내용대로 코드에서 처음에 i를 1로 초기화, 내부에서 Num에 i를 더합니다.
i가 5보다 작거나 같은지 체크합니다. true일 경우 탈출하지 않고 ++i를 수행합니다.
Num에 i값을 더하는 동작을 i가 5보다 작거나 같을 동안 반복합니다. 2가 false일 경우 탈출합니다.
마지막에 1~5까지 더한 Num을 출력합니다.
예제) 구구단 출력하기
int Num = 0;
for (int i = 2; i <= 9; ++i)
{
for (int j = 1; j <= 9; ++j)
{
cout << i << " * " << j << " = " << i * j << endl;
}
cout << endl;
}
중첩 for문을 활용하여 구구단 2단부터 9단까지 출력하는 예제입니다.
for문은 위와 같이 중첩해서 사용할 수 있습니다.
while 문
while문을 이용하여 무한하게 값이 증가하는 간단한 예제를 보겠습니다.
예제) 끝없이 값이 증가하는 Num
int Num = 0;
while (true)
{
++Num;
cout << Num << endl;
}
위 예제는 프로그램은 끝나지 않고 끝없이 Num 값만 1씩 증가합니다.
while (조건식) 과 같은 형태로 사용할 수 있으며 조건식이 true인 이상 지속해서 동작합니다.
do ~ while 문
do에 있는 코드를 먼저 실행 후 while 문의 조건을 검사하는 1번 실행 후 조건을 체크하는 반복문입니다.
예제) 5까지만 증가하는 Num
int Num = 0;
do
{
++Num;
cout << Num << endl;
} while (Num < 5);
Num을 1씩 증가시켜 5보다 작을 동안 동작하는 예제입니다.
위 코드에서는 크게 의미는 없고 사용법 정도만 보여주기 위한 예제이고 실제로 활용할 때에는 while 문 조건을 체크하기 전 한 번이라도 동작하기를 원할 때 사용합니다.
반복문의 친구 continue, break 문
반복문을 사용하다보면 특정 조건일 경우 더이상 코드를 진행하지않고 다음 차례로 넘기거나, 거기서 멈추고 싶을 수 있습니다. 이때 다음 차례로 넘길 수 있는 continue 문, 해당 위치에서 반복문을 종료하는 break 문을 사용합니다.
continue 문
예제) 구구단에서 홀수단은 제외하는 예제
int Num = 0;
for (int i = 2; i <= 9; ++i)
{
if (i % 2 != 0)
{
continue;
}
for (int j = 1; j <= 9; ++j)
{
cout << i << " * " << j << " = " << i * j << endl;
}
cout << endl;
}
기존 구구단 코드에 i를 2로 나눈 결과가 0이 아닌 경우(홀수) continue 문을 통하여 구구단이 출력되지 않도록 하였습니다.
break 문
예제) while 문에서 Num이 5보다 크면 탈출하는 예제
int Num = 0;
while (true)
{
++Num;
if (Num > 5)
{
break;
}
cout << Num << endl;
}
기존 while 문 예제에서 Num이 5보다 클 경우 break 문을 통하여 탈출하도록 하였습니다.
반복문을 활용한 가위바위보 삼세판
반복문중 for 문을 활용하여 가위바위보를 삼세판 할 수 있도록 기존의 가위바위보를 개선하겠습니다.
// 1은 가위, 2는 바위, 3은 보
int Player = 0; // 플레이어는 0 초기화
int Enemy = 1; // 적은 현재 가위만 낼 줄 안다.
for (int i = 0; i < 3; ++i) // 반복문을 활용하여 삼세판!
{
cout << "(1) 가위 (2) 바위 (3) 보" << endl;
cin >> Player;
switch (Player)
{
case 1: // 가위
cout << "무승부!!!" << endl;
break;
case 2: // 바위
cout << "플레이어 승리!!!" << endl;
break;
case 3: // 보
cout << "플레이어 패배ㅠㅠ" << endl;
break;
default:
cout << "잘못 된 입력을 하였습니다" << endl;
break;
}
}
가위바위보가 진행되는 코드에 for 문을 3번 동작하도록 코드 감쌌습니다.
이제 가위바위보는 삼세판 진행됩니다.
혼자 해보기
for 문을 활용하여 아래와 같이 별모양을 출력하세요. (if 문과 같은 분기문은 사용하지 않습니다.)
1)
*
**
***
****
*****
2)
*
**
***
****
*****
3)
*****
****
***
**
*
4)
*****
****
***
**
*
이전편
[밑바닥부터 시작하는 게임 개발/C++] - [밑바닥 C++] 6. 여러 흐름의 분기문 switch, 어디로든 튀는 goto
다음편
'밑바닥부터 시작하는 게임 개발 > C++' 카테고리의 다른 글
[밑바닥 C++] 6. 여러 흐름의 분기문 switch, 어디로든 튀는 goto (0) | 2021.08.29 |
---|---|
[밑바닥 C++] 5. 가위바위보 게임으로 알아보는 분기문(if) (0) | 2021.08.16 |
[밑바닥 C++] 4. 컴퓨터 친화적인 비트 연산자 + 축약, 증감 연산자 (2) | 2021.07.17 |
[밑바닥 C++] 3. HP 등 값을 조작하는 연산자, 변하지 않는 값 상수 (0) | 2021.07.11 |
[밑바닥 C++] 2. HP 표기 등을 위한 변수 (0) | 2021.07.10 |
댓글