금요일이다. 화요일에 쉬었지만 빨리 쉬고 싶다. 오늘도 화이팅
새로운 개인 프로젝트가 던져졌다. 내용은 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 변수로 장착/해제 상태를 체크하고, 장비를 장착하려고 할 때 이미 그 타입의 장비가 장착되어 있을 때는 먼저 그 장비를 해제시킨 후에 장비하도록 구현했다.