0. vs. 절차(procedure ; 함수)지향 프로그래밍
이전에 만들었던 TextRPG 같은 프로그램은 함수만을 이용한 프로그램이었다.
간단한 수준의 프로그램은 선형적인 구조(함수의 흐름에 따라)로 만들 수 있으나(로비 진입 -> 캐릭터 만들기 -> 게임 시작 ...)
기능이 추가되거나 더 복잡한 수준의 프로그램에서는 그렇게 만들기가 어렵다.
1. 객체 지향의 시작
1) 객체
게임 안에 존재하는 모든 물체 혹은 캐릭터, 몬스터 등
ex) 기사(Knight) 만들기
(1) 기사의 속성 (데이터)
- HP, ATK, 위치(y, x) ...
(2) 기사의 기능 (동작)
- 이동, 공격, 사망 ...
class Knight
{
public:
// 멤버 함수
void Move(int y, int x);
void Attack();
void Die();
public:
// 멤버 변수
int hp;
int atk;
int posY;
int posX;
}
C++에서는 class와 struct의 사용이 거의 동일하다.
이후 구현은 다음과 같이 표현된다.
void Knight::Move(int y, int x)
{
}
아니면 class 내부에서 구현할 수도 있다.
class Knight
{
public:
// 멤버 함수
void Move(int y, int x);
void Attack();
void Die()
{
hp = 0;
cout << "Die" << endl;
}
//~~~
이후 메인 함수 내에서 구현하여 객체를 만들면(Instantiate) 아래와 같다.
// instantiate ; 객체를 만듬
int main()
{
Knight k1;
k1.hp = 100;
k1.atk = 10;
k1.posY = 0;
k1.posX = 0;
Knight k2;
k1.hp = 80;
k1.atk = 5;
k1.posY = 1;
k1.posX = 1;
return 0;
}
또한 다음과 같이 객체의 데이터를 조작할 수 있다.
int main(){
//~~
k1.Move(2, 2);
k1.Attack();
k1.Die();
return 0;
}
/* output :
Move
Attack
Die
'기초 C++ 스터디' 카테고리의 다른 글
5-1. 생성자와 소멸자 (0) | 2023.05.25 |
---|---|
번외) 파일 분할 관리 (0) | 2023.05.25 |
4-11. 포인터 최종 정리 (0) | 2023.05.23 |
4-10. 다차원 배열 (0) | 2023.05.23 |
4-9. 멀티 포인터 (0) | 2023.05.23 |