오븐 노트

[C++] 객체지향의 시작 본문

Develop/C++

[C++] 객체지향의 시작

오 븐 2022. 9. 5. 12:49
#include <iostream>
using namespace std;

// 데이터 + 가공 (로직, 동작)
// 객체란? 플레이어, 몬스터, GameRoom 등 모든 것

// Knight를 설계해보자
// - 속성 (데이터) : hp, attack, y, x
// - 기능 (동작) :  Move, Attack, Die

// struct와 class는 c에서는 서로 완전히 다르지만 c++에서는 거의 동일하다 (문법 또한 거의 같다)
// class는 일종의 설계도
// '소속'이 중요
class Knight
{
public:
	//멤버 함수 선언
	void Move(int y, int x);
	void Attack();

	void Die()
	{
		hp = 0;
		cout << "Die" << endl;
	}

public:
	// 멤버 변수
	int hp;
	int attack;
	int posY;
	int posX;
};

void Move(Knight* knight, int y, int x) // 일반 함수 버전
{
	knight->posY = y;
	knight->posX = x;
}

void Knight::Move(int y, int x) // 멤버 함수 버전
{
	posY = y;
	posX = x;
	cout << "Move" << endl;
}

void Knight::Attack()
{
	cout << "Attack : " << attack << endl;
}

// Instantiate 객체를 만든다
int main()
{
	Knight k1;
	k1.hp = 100;
	k1.attack = 10;
	k1.posY = 0;
	k1.posX = 0;

	Knight k2;
	k1.hp = 80;
	k1.attack = 5;
	k1.posY = 1;
	k1.posX = 1;

	Move(&k1, 2, 2); // 일반 함수 버전

	k1.Move(2, 2); // 멤버 함수 버전
	k1.Attack();
	k1.Die();

	return 0;
}

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
 
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.

 

모든 글은 제가 공부하기 위해 작성합니다.

'Develop > C++' 카테고리의 다른 글

[C++] 상속성  (0) 2022.09.20
[C++] 생성자와 소멸자 #1 ~ 2  (0) 2022.09.07
[C++] 파일 분할 관리  (0) 2022.08.29
[C++] 연습문제 (달팽이)  (0) 2022.08.22
[C++] 연습 문제 (문자열) #1 ~ 2  (0) 2022.08.16