프로그래밍 언어/C++

[게임 프로그래머 입문 올인원] 데이터와 로직 : 조건문, 반복문, 연습문제 (8, 9, 10강)

순정법사 2023.09.05

A. 제어문

1. 조건문

a. if / else / else if

💙 else if가 생성되는 모습

 

 

코드는 한줄이게되면 {}을 생략할 수 있음.

이때 위 코드는 if / else문으로 전체가 한 줄로 취급되어

전체 코드를 위로 올리면 

 

 

이렇게 됨!

 

b. switch case

가독성이 좋아서 if문보다 더 권장

 

 

 

2. 반복문

a. while / do-while / for

어딘가에서 게임이 끝나지 않게 해주는 역할을 함

 

 

💙 for / while 문의 차이점

 

가독성

사용빈도는 for가 90%정도 더 많음

 

do-while은 거의 사용하지 않음

 

b. break

제어문에서 루프를 빠져나오고싶을 때 사용 (단일 루프만 빠져나옴)

 

c. continue

아래 코드를 실행시키지 않고 다음 조건을 판별하는 곳으로 이동

while문에서는 조건문 위치를 조심해야 함!

 

 

 


B. 연습문제

1. 별찍기

a. 문제

별을 입력받고 N*N을 출력하시오

 

b. 코드

🎈 정답

#include <iostream>
using namespace std;

//별찍기
int main()
{
    int N;
    cin >> N;
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            cout << "*";
        }
        cout << endl;
    }
}

 

 

 

2. 구구단

a. 문제

2단부터 9단까지 출력하는 코드를 작성하세요

 

b. 코드

🎈 정답

#include <iostream>
using namespace std;

int main()
{
	for (int i = 2; i <= 9; i++) {
		for (int j = 1; j < 9; j++) {
			cout << i << " * " << j << " = " << i * j << endl;
		}
		cout << endl;
	}
}

 

 

 

3. 간단한 전투 

a. 문제

라운드마다 데미지를 입은 몬스터의 체력을 출력하고

5 라운드 안에 몬스터를 처치하면 처치, 실패하면 라운드 종료를 출력

 

b. 코드

🎈 정답

#include <iostream>
using namespace std;

//별찍기
int main()
{
    int round = 1;
    int hp = 100;
    int damage = 20;

    while (true) {

        hp -= damage;

        if (hp < 0) {
            hp = 0;
        }

        cout << "Round: " << round << " 몬스터 체력: " << hp << endl;

        if (hp == 0) {
            cout << "몬스터 처치" << endl;
            break;
        }

        if (round == 5) {
            cout << "제한 라운드 종료" << endl;
            break;
        }

        round++;
    }
}

 

 

 

4. 가위 - 바위 - 보

a. 문제

유저에게 0, 1, 2를 입력받아 컴퓨터의 랜덤값과 싸워 승부를 겨루는 게임을 작성하시오

 

b. 코드

🎈 정답

#include <iostream>
using namespace std;

enum ENUM_GBB 
{
    GBB_SCISSORS = 0,
    GBB_ROCK =1, 
    GBB_PAPER = 2,
};

#define DEF_SISSORS 0   // 여기까지는 거의 사용하지 않음
//전처리 단계에서 컴파일러에게 바꿔치기 해달라고 하는것만 기억


int main()
{

    srand(time(0));

    while (true) {

        cout << "가위(0) 바위(1) 보(2) 골라주세요!";
        cout << "> ";

        // 사용자
        int value;
        cin >> value;

        //컴퓨터
        int computerValue = rand() % 3;

        if (value == GBB_SCISSORS) {   //가위
            switch (computerValue) {
                case GBB_SCISSORS:
                    cout << "가위(Player) vs 가위(Computer) : 비겼습니다!" << endl;
                    break;
                case GBB_ROCK:
                    cout << "가위(Player) vs 바위(Computer) : 졌습니다!" << endl;
                    break;
                case GBB_PAPER:
                    cout << "가위(Player) vs 보(Computer) : 이겼습니다!" << endl;
                    break;
                default :
                    break;
            }
        }
        else if (value == 1) {
            switch (computerValue) {
            case GBB_SCISSORS:
                cout << "바위(Player) vs 가위(Computer) : 이겼습니다!" << endl;
                break;
            case GBB_ROCK:
                cout << "바위(Player) vs 바위(Computer) : 비겼습니다!" << endl;
                break;
            case GBB_PAPER:
                cout << "바위(Player) vs 보(Computer) : 졌습니다!" << endl;
                break;
            default:
                break;
            }
        }else {
            switch (computerValue) {
            case GBB_SCISSORS:
                cout << "보(Player) vs 가위(Computer) : 졌습니다!" << endl;
                break;
            case GBB_ROCK:
                cout << "보(Player) vs 바위Computer) : 이겼습니다!" << endl;
                break;
            case GBB_PAPER:
                cout << "보(Player) vs 보(Computer) : 비겼습니다!" << endl;
                break;
            default:
                break;
            }
        }
    }
}

 

 

 


출처 : https://www.inflearn.com/course/%EA%B2%8C%EC%9E%84-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8-%EC%9E%85%EB%AC%B8-%EC%98%AC%EC%9D%B8%EC%9B%90-rookiss#curriculum

 

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버 -

어디부터 시작할지 막막한 게임 프로그래밍 입문자를 위한 All-In-One 커리큘럼입니다. C++, 자료구조/알고리즘, STL, 게임 수학, Windows API, 게임 서버 입문으로 이어지는 알찬 커리큘럼으로 게임 프

www.inflearn.com