응애맘마조

230907 강의 본문

공부/3D강의

230907 강의

TH.Wert 2023. 9. 7. 13:04

팀 프로젝트를 만들면서 인벤토리에 관련된 얘기들이 많이 나와서 이에 대한 강의를 했습니다. 3일 정도 걸려서 완성된다고 해서 오늘은 완성되지 못했습니다.

#pragma once
class Item
{
    friend class Inven;
    int    type;    //타입
    string name;    //이름
    int    num;     //갯수
    string file;    //연결될 텍스처 or xml
};

class Weapon : public Item
{
public:
    friend class Inven;
    int att;        //공격력
};

//그려줄 객체 , 내부에 아이템 데이터를 관리
class Inven : public UI
{
    //txt 에서 읽어온 아이템 리스트
    static Item**    itemList;
    static int      itemListSize;

    //이중배열로 만들 아이템
    Item**          itemSlot;

public:

    static void CreateStaticMember();
    static void DeleteStaticMember();
};
#include "stdafx.h"

Item** Inven::itemList = nullptr;
int    Inven::itemListSize = 0;

void Inven::CreateStaticMember()
{
    ifstream fin;

    fin.open("../Contents/aaa111.db", ios::in);

    fin >> itemListSize;

    itemList = new Item*[itemListSize];

    for (int i = 0; i < itemListSize; i++)
    {
        int type;
        fin >> type;
        if (type == 0)
        {
            itemList[i] = new Item();
            fin >> itemList[i]->name;
            fin >> itemList[i]->file;
        }
        else  if (type == 1)
        {
            Weapon* weapon = new Weapon();
            fin >> weapon->name;
            fin >> weapon->file;
            fin >> weapon->att;
            itemList[i] = weapon;
        }
    }
}

void Inven::DeleteStaticMember()
{
    SafeDeleteArray(itemList);
}

이중배열로 만드는 것이 편하지만 정렬이 어렵다는 장단점이 존재합니다. 메모장 같은 파일로 불러올 수 있고 강의 초기에 사람 찾기를 했던 것처럼 띄어쓰기를 사용해서 값을 구분하는 방식으로 했습니다.

 

읽어주셔서 감사합니다.

'공부 > 3D강의' 카테고리의 다른 글

230911 강의  (0) 2023.09.11
230908 강의  (0) 2023.09.08
230906 강의  (0) 2023.09.06
230905 강의  (0) 2023.09.05
230904 강의  (0) 2023.09.04
Comments