[C++ 기초] 디폴트 인자, static, 콘솔 지렁이 게임 만들기

라멘커비·2024년 1월 17일
0

CPP 입문

목록 보기
24/25

디폴트 인자

아무 값을 넣지 않고 함수를 호출하면 디폴트 값이 들어가도록 하는 문법이다.
디폴트 인자는 선언쪽에만 넣을 수 있다.

#include <iostream>

int Function(int _Value = 1);


int main() {
	int a = Function();		// 3
	int b = Function(10);	// 30


	return 0;
}

int Function(int _Value) {
	return _Value * 3;
}

가장 우측부터 채워나가야 한다.

int Function(int _Value0, int _Value1 = 1, int _Value2 = 2, int _Value3 = 3);

int main()
{
    Function(10/*, 1, 2, 3*/);
}


int Function(int _Value0, int _Value1, int _Value2, int _Value3)
{
    return _Value0 * 3;
}

static member

클래스의 객체 모두가 공유하는 개념의 값이 필요할 때가 있다.
객체 각각이 가지는 것이 아니고 모두가 같은 값을 공유할 수 있어야 한다.

  • 아래 코드에서는 객체 각각의 MonsterCount가 1이 된다.
    의도 : MonsterCount에 전체 몬스터의 수를 표시하고 싶다.
    그렇다고 전역변수로 두면 몬스터가 아닌 애들도 접근가능해진다.
class Monster{
public:
	Monster(){
    	++MonsterCount;
    }
    int MonsterCount = 0;
};
int main(){
	Monster NewMonster0 = Monster();
    Monster NewMonster1 = Monster();
    Monster NewMonster2 = Monster();
	return 0;
}

🐵static member 전역 변수

(extern 변수는 이런 변수가 있을 것이라는 의미)
static은 class내 전역 변수를 만드는 것이다.
다른 클래스에서 사용할 수 없도록 private으로 선언해야 한다.

class Monster{
public:
	Monster(){
    	++MonsterCount;
    }
private:
	static int MonsterCount;
};
int main(){
	Monster NewMonster0 = Monster();
    Monster NewMonster1 = Monster();
    Monster NewMonster2 = Monster();
	return 0;
}

🐵static member 전역 함수

#include <iostream>

class Monster
{
public:
    // static 맴버함수
    static int /*Monster::*/GetMonsterCount()
    {
        return MonsterCount;
    }

    Monster()
    {
        ++MonsterCount;
    }

private:
    static int MonsterCount;
};

int Monster::MonsterCount;

class Player 
{
public:
    void Update()
    {

        if (0 >= Monster::GetMonsterCount())
        {

        }

        std::cout << Monster::GetMonsterCount() << "의 몬스터가 남아있습니다" << std::endl;
    }

public:
    Player()
    {
        // 플레이어가 사용하면 안되므로 private으로 만들어야 한다.
        // ++Monster::MonsterCount;
    }
};

int main()
{
    Monster NewMonster0 = Monster();
    Monster NewMonster1 = Monster();
    Monster NewMonster2 = Monster();

    Player NewPlayer;

    NewPlayer.Update();
}

과제

🐵지렁이게임 만들기

  1. 내가 특정 방향으로 진행했다면 다음 입력때는 그 반대방향으로는 갈수가 없다.
    내가 이동하는 방향의 반대방향으로는 가면 안된다.
  2. 내가 이동을 해서 CurBody를 획득했다면 그 다음부터 그 바디는 나를 따라와야 한다.

코드

내 지렁이게임 코드
선생님 지렁이게임 코드(방법 3개)

실행 모습

profile
일단 시작해보자

0개의 댓글

관련 채용 정보