[TIL] 9일차 - 상속의 이해

김유원·2024년 1월 4일
0

📝 24.01.04 (목)

오늘은 어제 일찍 잔 덕인지 상쾌한 몸 상태로 하루를 시작했다. 그래서 미뤄두었던 상속에 대한 개념을 정리했다.

🔗 : [C#] 상속, 다형성, 인터페이스


상속과 가상 메서드, 추상 클래스와 메서드, 그리고 인터페이스에 대한 내용을 모두 정리하다보니 기본적인 분량이 있는데다가 헷갈리는 부분에 대해서 다시 검색해보고 실행하면서 겪은 오류와 궁금한 점도 모두 담았더니 포스트가 꽤 길어졌다. 하지만 이제는 더이상 상속과 클래스에 대해 헷갈일 일은 거의 없을 것 같다. 분량이 꽤 길어 작성하는 데에도 오랜 시간이 걸렸다.


텍스트 RPG 과제 수정 및 추가

1) 아이템 중복 확인을 위한 넘버 추가

public Item(int itemNum, string itemName, int itemPart, int itemAtk, int itemDef, string itemSummary, int itemGold)
{
    ItemNum = itemNum;
    ItemName = itemName;
    ItemPart = itemPart; //0은 갑옷 1은 무기
    ItemAtk = itemAtk;
    ItemDef = itemDef;
    ItemGold = itemGold;
    isEquipped = false;
    ItemSummary = itemSummary;
}

Item 클래스에 itemNum을 추가하였고, 이를 중복 확인에 사용하도록 설계했다.

public void BuyItem(Item item)
{
    Console.WriteLine();
    if(!isOwned(item))
    {
        if (item.ItemGold <= Gold)
        {
            Gold -= item.ItemGold;
            inven.Add(item);
            Console.WriteLine("'{0}'을 구매했습니다.", item.ItemName);
        }
        else
        {
            TextColor("Gold가 부족합니다.", ConsoleColor.Red);
        }
    } else
    {
        Console.WriteLine("이미 구매한 아이템입니다.");
    }
}

만약 새로 구매하고자 하는 아이템이 이미 character의 인벤토리에 있는 아이템이라면 구매한 아이템이라는 안내가 뜨도록 설계했다.

2) TextColor 수정

중요 부분에 대해서는 텍스트의 색을 바꿔 강조하기 위하여 TextColor() 함수를 구현했었다. 기존 형태는 TextColor(string text)로만 구현되어있고 텍스트 컬러가 노란색으로 고정되어 있었다. 하지만 필요에 의해 다른 색으로도 출력하기 위해 Color도 입력받을 수 있도록 수정하였다.

static void TextColor(string text, ConsoleColor clr)
{
    Console.ForegroundColor = clr;
    Console.WriteLine(text);
    Console.ResetColor();
}

3) 상점 완성

Console.WriteLine("\n1. 아이템 구매");
Console.WriteLine("0. 나가기\n");

int cmd = CheckAction("원하는 행동을 입력해주세요.", 0, 1);
if (cmd == 0)
{
    Village(character);
}
else
{
    int itemNum = CheckAction("\n구매할 아이템 번호를 선택해주세요.", 1, shopItem.Count);
    character.BuyItem(shopItem[itemNum - 1]);
}

Console.WriteLine("\n1. 아이템 구매 계속하기");
Console.WriteLine("0. 나가기\n");
cmd = CheckAction("원하는 행동을 입력해주세요.", 0, 1);

if (cmd == 0)
{
    Village(character);
} else
{
    Store(character);
}

상점에서 구매 활동을 추가하였다. 그냥 구매여부와 구매 후 활동을 연결해주었을 뿐이다.



아직도 장비 장착을 해결하지 못했다. 해당 부분만 완성하면 필수 구현 부분은 완성이기 때문에 내일 오전 내내 이를 구현하고 제출해야 할 것 같다.

추가적으로 Store에서 아이템 계속 구매 시 처음부터 시작하는 방식이 아닌 아이템 구매 가능 상태에서 출력도록 수정하고 싶다.

profile
개발 공부 블로그

0개의 댓글

관련 채용 정보