ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 스파르타 던전 2
    게임 기획/내일배움캠프 2025. 4. 17. 23:02

     

    실시간 상태 반영
    상태창에서 골드 획득, 아이템 착용 등에 따라 달라지는 상태를 실시간으로 반영하기.

    그러기 위해서 class Player를 따로 만들어줬다. 실시간으로 변동되는 것이 적용 될 수 있도록 namespace 바깥에 class Player를 만들어주고 상태창에서도 변동 가능하도록 작성해주었다.
    class Player
    {
        public int Level = 1;
        public string Name = "선샤인";
        public string Job = "전사";
        public int Atk = 10;
        public int Def = 5;
        public int Hp = 100;
        public int Gold = 1500;
    }​

     


    어디서나 접근하기 편하도록 class 바깥에 Player class를 따로 만들어주었다. 

    Console.Write($"Lv. ");
    Console.ForegroundColor = ConsoleColor.Magenta;
    Console.WriteLine($"{player.Level:D2}");
    Console.ResetColor();
    
    Console.Write($"{player.Name} ");
    Console.ForegroundColor = ConsoleColor.Magenta;
    Console.WriteLine($"({ player.Job} )");
    Console.ResetColor();
    
    Console.Write($"공격력 : ");
    Console.ForegroundColor = ConsoleColor.Magenta;
    Console.WriteLine($"{player.Atk}");
    Console.ResetColor();
    
    Console.Write($"방어력 : ");
    Console.ForegroundColor = ConsoleColor.Magenta;
    Console.WriteLine($"{player.Def}");
    Console.ResetColor();
    
    Console.Write($"체  력 : ");
    Console.ForegroundColor = ConsoleColor.Magenta;
    Console.WriteLine($"{player.Hp}");
    Console.ResetColor();
    
    Console.Write($"Gold   : ");
    Console.ForegroundColor = ConsoleColor.Magenta;
    Console.WriteLine($"{player.Gold} G");
    Console.ResetColor();

     

    ㅋㅋ,, 색 지정 때문에 어지럽긴한데 ($" LV. {player.Level:D2}) 이렇게 player class에서 불러올 수 있도록 지정해주었고 잘 출력되는 것까지 확인했다!

    D2는 정수만 2자리 출력되게 해주는 용도(unity 배울 때 N2만 써서 헷갈렸는데 N2는 소수점 2자리까지 나오게 해주는 것)

     

    던전 보상
    int defDiff = dungeon.RequiredDef - player.TotalDef;
    defDiff = Math.Abs(defDiff);
    
    int min = 20 + defDiff;
    int max = 35 + defDiff;
    
    int hpLoss = new Random().Next(min, max + 1);
    player.Hp = Math.Max(0, player.Hp - hpLoss);
    
    int atkPercent = new Random().Next(player.TotalAtk, player.TotalAtk * 2 + 1);
    int reward = dungeon.BaseReward + (dungeon.BaseReward * atkPercent / 100); //
    player.Gold += reward;​

    이거 구현하는게 넘 어려웠당 ,, 
    도저히 저 영어들이 손에 감기지가 않아서 ^_^,, 계속 검색하고 수정하며 결국 만들어내긴 했는데 안 보고 다시 쓰라 하면 못 할듯,.,ㅋ.ㅋ..

    - de diff: 방어력 차이에 따라 체력 감소량 조정
    - min, max +diff: 체력 감소 범위에 조정한 감소량 적용
    - atkPercent = Random(playerAtk ~ playerAtk * 2): 공격력 기준 보상 % 계산
    - BaseReward + (BaseReward * atkPercent / 100): 기본 보상에 퍼센트 반영한 보상

     

     

    과제 끝!!!!

    만들면서 개발보단 기획단계가 재밌었던지라,, 역시나 기획이 적성에 맞다는 생각을 했다,, ^_^,, 

    그치만 계속 고민하고 수정하고 결국 구현해 내는 과정이 참 매력적이었다.

    예상보다 개발이 생각보다 재밌어서 즐겁게 작업 할 수 있었다!!

     

    얼른 기획 파트도 배워서 맘에 쏙 드는 게임을 만들어 보고 싶다💕

    '게임 기획 > 내일배움캠프' 카테고리의 다른 글

    [TIL] Text RPG (Team Project) 1  (2) 2025.04.21
    [TIL] C# 기초 2  (0) 2025.04.21
    [TIL] 스파르타 던전 1  (1) 2025.04.16
    [TIL] 예문 풀이  (3) 2025.04.15
    [TIL] C# 기초 1  (1) 2025.04.14
Designed by Tistory.