230818 내일배움캠프 9일차

Minsang Kim·2023년 8월 18일
0

TIL

목록 보기
9/41

금요일이다. 화요일에 쉬었지만 빨리 쉬고 싶다. 오늘도 화이팅


콘솔 던전

새로운 개인 프로젝트가 던져졌다. 내용은 C# 기반으로 콘솔 게임의 시작부분을 만드는 것이다. 필수 요소로 플레이어의 스탯 확인과 인벤토리에서 장비 장착/해제 정도의 기능이다. 근데 이것만 만들면 심심할 거 같아서 그냥 통째로 게임 만들기로 결정했다.

=> 콘솔 던전

기한은 수요일까지. 빡시게 한 번 불태워보자 💉
일단 게임 이름은 콘솔 던전 으로 생각중이다. 콘솔에서 나오는 그 느낌이 좋다. 후엔 아스키 아트도 적용해보고 싶은 마음이 있다.
게임은 아무래도 로그라이크 방식으로 갈 것 같다. 그리고 중요한 던전에서 전투는 최대한 간단하게 만들 예정이다. 마치 예전 초등학교때 친구들과 하던 게임처럼 만들 생각이다.

일단 interface로 ICharacter를 만들어 플레이어나 몬스터들이 기본적으로 가져야 하는 필드의 틀을 만들었다.
그를 상속받아 플레이어를 만드는 데 필드로 이름, 직업, 레벨, 공격력, 방어력, 체력, 스피드, 골드를 만들었다. 다른 건 대충 느낌 알겠는데 스피드는 선공을 위한 스탯으로 사용할 예정이다.

장비 클래스도 만들어 주고 오늘 가장 힘들게 구현했던 장비 장착과해제 함수이다.

public void Switch(Player player)
    {
        // 장착
        if (!isEquipped)
        {
            // 이미 해당 타입의 장비가 장착되어 있을 때 해제 먼저
            if (player.OnEquip[(int)Type] != null)
            {
                player.OnEquip[(int)Type].State = ' ';
                player.OnEquip[(int)Type].isEquipped = false;
                player.EquipEffect(player.OnEquip[(int)Type].Index, false);
                player.OnEquip[(int)Type] = null;
            }
            
            player.OnEquip[(int)Type] = this;
            State = 'E';
            player.EquipEffect(Index, true);
        }
        // 해제
        else
        {
            player.OnEquip[(int)Type] = null;
            State = ' ';
            player.EquipEffect(Index, false);
        }

        isEquipped = !isEquipped;
    }

Player.OnEquip은 플레이어 클래스에 존재하는 필드이고, <방어구, 무기구, 장신구, 아이템> 을 하나씩만 장착할 수 있도록 구현하고자 하는 리스트이다.
isEquipped 변수로 장착/해제 상태를 체크하고, 장비를 장착하려고 할 때 이미 그 타입의 장비가 장착되어 있을 때는 먼저 그 장비를 해제시킨 후에 장비하도록 구현했다.


세줄 요약

  • 또 게임 만들어보자
  • 근데 그게 콘솔임
  • 하루만에 필수 요소 구현 해버림
profile
게임만 하다가 개발자로

0개의 댓글