ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 2주차 4일 개인 프로젝트
    개발일지/스파르타 코딩클럽 부트캠프 2024. 4. 25. 21:03

    개인 프로젝트 일단 끝..일단..

     

     

    오늘 발생한 문제

     

    난 왜 이 언어를 이따구로 쓰는가


     

    어제부터 여러번 죽었다 깨어났다 하면서 

    개인프로젝트 제출기한이 끝날 때 쯤에나 깨달은건데

    난 정말 왜 이런 식으로 하고 있었을까? 라는 것이다.

     

    일단 난 물론 아직 배운게 적고 지식이 적어서 그렇지만

    분명 오늘의 내가 어제의 나를 바라볼 때는 하면서 이상한거 못느꼈나? 인데..

     

    객체 지향 프로그래밍을 하지 않았다

     

    일단 이번 내 개인 프로젝트의 가장 큰 문제점이라고 볼 수 있다.

    이것 말고도 많지만 일단은 보자면

     

    일단 나는 C#으로 프로그래밍을 하는것이 이번이 처음인데

    지금까지는 항상 유니티로만 했어서 C#만으로 한 적은 한 번도 없었다.

     

    근데 유니티로 무언가를 할 때 항상 여러 스크립트를 짜서 진행을 했으면서

    이번엔 왜 그러지 않았나? 하는 의문이 든다.

     

    내 생각에 가장 큰 문제점.

     GameManager.cs와 DataManager.cs 두 클래스로만 작업을 진행했다.

     

    이게 초반에는 당연히 못느꼈지만

    중반부터 크게 느껴지던것이

    본문의 길이가 너무 길어졌다.

    그리고 나도 어디를 수정할지 유지 보수가 어려워지고

    코드가 쓸데없이 길고 복잡해지기만 할 뿐이었다.

    물론 데이터의 관리도 잘 되지 않았다.

     

    나중에 튜터님께 멘토링을 받고나서야 클래스를 늘렸다..(제출 1시간 전에..)

     

    컬렉션을 너무 못 사용했다

     

    이 번 프로젝트 때 내가 가장 많이 쓴 건

    switch문과 이차원 배열이다.

     

    일단 당연히 내가 실력이 부족하다보니.. 아는범위에서 어떻게든 설쳐보다 보니

    이러한 기괴한 형태가 되어있었다.

     

    나도 이걸 가지고 튜터님께 가서 웃으면서 말씀드렸다.

    저도 뭔가 아닌 거 같았다며..

     

    내 생각에도 그랬지만 튜터님도 나중에 아이템이 1000개 10000개가 된다고 치면

    내 코드는 사실상 사용 불가능한 코드라고 하셨다.

     

    내가 저렇게까지 망가진데는 가장 중요한 이유가 있는데

    객체지향을 안함이다. 그리고 그와 동시에 클래스, 컬렉션을 제대로 활용하지 않은 것.

     

    원래 내가 쓰고있던 데이터와 튜터님과 만든 리스트의 차이점을 보도록 하자

     

    // 원래 내가 쓰던 이차원 배열
    public string[,] shopItem = new string[6, 4]
    {
        {"수련자 갑옷    | ", "방어력 +5 |", "수련에 도움을 주는 갑옷입니다. | ", "1000 G"},
        {"무쇠갑옷       | ", "방어력 +9 | ", "무쇠로 만들어져 튼튼한 갑옷입니다. | ", "1500 G"},
        {"스파르타의 갑옷 | ", "방어력 +15 | ", "스파르타의 전사들이 사용했다는 전설의 갑옷입니다. | ", "3500 G"},
        {"낡은 검        | ", "공격력 +2 | ", "쉽게 볼 수 있는 낡은 검 입니다. | ", "600 G"},
        {"청동 도끼      | ", "공격력 +5 | ", "어디선가 사용됐던거 같은 도끼입니다. | ", "1500 G"},
        {"스파르타의 창  | ", "공격력 +7 | ", "스파르타의 전사들이 사용했다는 전설의 창입니다. | ", "2500 G"}
    };
    
    // 튜터님과 만든 리스트
     public List<Item> items = new List<Item>();
     
    
     Item item1 = new Item("수련자 갑옷", 0, 5, "수련에 도움을 주는 갑옷입니다.", 1000);
     Item item2 = new Item("무쇠 갑옷", 0, 9, "무쇠로 만들어져 튼튼한 갑옷입니다.", 1500);
     Item item3 = new Item("스파르타의 갑옷", 0, 15, "스파르타의 전사들이 사용했다는 전설의 갑옷입니다.", 3500);
     Item item4 = new Item("낡은 검", 2, 0, "쉽게 볼 수 있는 낡은 검 입니다.", 600);
     Item item5 = new Item("청동 도끼", 5, 0, "어디선가 사용됐던거 같은 도끼입니다.", 1500);
     Item item6 = new Item("스파르타의 창", 7, 0, "스파르타의 전사들이 사용했다는 전설의 창입니다.", 2500);

    Item 클래스를 따로 만들어서 리스트를 만들었다.

     

    일단 가장 큰 차이점은 데이터의 수정이 용이하다는건데

    내가 쓰던 이차원 배열의 경우 공격력, 방어력, 가격 같은 수치도

    모두 문자열이라서 사실상 데이터의 조정이 되게 힘든 편이고

    나는 일단 이번 프로젝트 임시방편 될대로되라로 이번 프로젝트의

    필수 구현에는 일단 아이템을 하나만 꼈기 때문에 문자열을 추가해서 구현했지만

     

    실제로 여러가지 장비를 한꺼번에 끼게 된다면 감당할 수 없게 될 것이다.

    그리고 이건 .. GameManager에도 당연히 상당히 큰 영향을 끼쳤는데....

     

    사실 클래스를 이렇게 탄탄히 잡아놓고 갔다면

    저렇게 위의 방식대로 switch문을 좌르륵 늘려놓고 쓸 일이 없을 것이다.

     

    오늘은 사실 방전되기도 했고 저녁시간 이후에 특강도 있었어서

    아직 수정을 하지 못했지만 제출 후에 수정이 가능하고

    내일 재제출이 가능하니 저 Item 클래스를 기반으로

    다시 한 번 훨씬 더 퀄리티 높은 텍스트 RPG를 제작해보려한다.

     

    오늘은 일찍 자자..

     

     

     

     

Designed by Tistory.