03-1. C++, 그리고 구조체

 

 우리는 C언어를 공부하며 구조체에 대한 학습을 했다. 관련된 데이터를 묶었을때, 프로그램의 구현 및 관리를 쉽게 할 수 있기에 구조체가 중요한 역할을 했다. 게임으로 쉽게 예를 들어보자. 다음은 유비소프트 사의 '레인보우 식스:시즈'에 등장하는 한 캐릭터이다.

주무기로 방패를 사용한다.

 이 캐릭터 하나를 구성하는 요소는 얼마나 될까? 생각나는대로만 적어보자면 움직임, 일반공격, 사격, 히트박스, 특수능력, 사운드, 총기 등이 있다. 그리고 이러한 캐릭터는 게임상에서 약 50가지 존재한다. 그렇다면 캐릭터마다 각각의 요소를 코딩하는 것은 상당히 비효율적이고, 힘들 것이다. 이를 위해 구조체가 등장한 것이다. 

 캐릭터들이 공통으로 가지고 있는 움직임, 사격, 일반 공격 등에 대해서 구조체를 사용해 코딩한다면, 더욱 간편한 사용이 가능할 것이다.  C언어 스타일로 구조체를 정의하자면 다음과 같다.

struct Operator
{
    char operName[OP_LEN]; //오퍼레이터(캐릭터) 이름, OP_LEN은 매크로 상수
    int hitboxHEAD; //머리에 입는 데미지
    int hitboxBODY; //몸에 입는 데미지
    int hitboxARMnLEG; //팔다리에 입는 데미지
    int HP; //체력
    int amour; //보호구
    int atkDMG; //사격데미지
    int melDMG; //근접공격데미지
    int sklDMG; //스킬데미지
 }
    

C++도 비슷하게 구조체를 정의하면 된다. 하지만 구조체 변수의 선언 시, 차이점이 생긴다.

C언어에서는 구조체 변수를 다음과 같이 선언할 수 있다.

struct Operator Blitz;

하지만, C++에서는 typedef나 struct 없이 다음처럼 선언하면 된다.

Operator Blitz;

 

'게임 개발 > C++언어' 카테고리의 다른 글

함수에서의 포인터 사용  (0) 2024.05.01
C++언어 포스팅 계획  (0) 2020.12.23

+ Recent posts