개발일지

241001(화) [팀과제, 인터페이스와 열거형]

게임 프로그래머 2024. 10. 1. 21:50

팀과제 부분 스킬을 추가했다.

 

각 직업군 특성에 맞는 스킬과 확률에 따른 치명타 구현

 

코드 작성시 빨간줄이 떠서 확인을 해봤다.

 

문제점: 스킬 2가지를 구현했고 도적에만 적용되는 스킬(재화 획득)과

궁수와 전사에 적용되는 스킬(공격력 증가)이 따로 적용했는데

인터페이스에 관련 메서드를 둘다 넣어서 클래스에 둘다 구현하지 않으면 오류가 발생했다.

도적엔 공격력 증가 스킬이 필요가 없고  궁수와 전사에는 재화 획득 스킬이 필요가 없는데

인터페이스 특성상 인터페이스에 구현되어 있는 내용을

클래스에 구현 하려다 보니 둘다 구현할 수 밖에 없게된 것이다.

 

시도한부분: 해당 클래스에 사용하지 않은 메서드도 구현하여 우선 빈칸으로 두었다.

 

해결방법: 인터페이스에 2개의 공통 메서드를 지우고 각기

다른 클래스에 메서드를 구현했더니 오류가 해결되었다.

 

알게된점: 클래스에서 인터페이스를 구현하려면 인터페이스에 있는 모든 멤버를 구현해야 한다.

강의 내용에 있는 데 무슨말인지 실제로 보게되니 이해가 되었다.


 

코드를 작성하면서 느낀점은 밸런스 조절하는게 정말 쉽지 않은 거란걸 느끼게 됐다.

 

단순 수치조절이 아니라 연관성을 다 따져봐야 하고 직업군이 많으면 더 심할 것 같다.

 

또, 강의를 복습하는데 4주차 인터페이스, 열거형 강의를 처음 들을때는 처음이라 무슨 말인지 몰랐었는데

 

팀프로젝트랑 연관시켜보니까 조금은 이해되는 것 같기도.. 팀원분들이 잘 알려주셔서 감사할따름

 

아래는 인터페이스와 열거형 내용정리


인터페이스

: 클래스가 구현해야 하는 멤버들을 정의하는 것

 

사용하는 이유

코드의 재사용성, 다중상속, 유연한 설계

 

특징

1) 인터페이스는 클래스는 아니 클래스에 대한 제약 조건을 명시하는 것이다.

2) 키워드 대문자 I로 시작한다. interface IMyinterface

3) 인터페이스는 다중상속을 지원한다.

4) 클래스가 인터페이스를 구현할경우, 모든 인터페이스 멤버를 구현해야 한다.

 

정의

interface IMyInterface
{
    void Method1();
    int Method2(string str);
}

 

구현하기

class MyClass : IMyInterface
{
    public void Method1()
    {
        // 구현
    }

    public int Method2(string str)
    {
        // 구현
        return 0;
    }
}

 

열거형

: 코드의 가독성을 높여주기 위해 사용

 

사용하는 이유

가독성, 자기문서화(상수 대신 의미있는 이름 사용), switch문과 호환

 

정의

enum MyEnum
{
    Value1,
    Value2,
    Value3
}

 

사용

MyEnum myEnum = MyEnum.Value1;

 

형변환

int intValue = (int)MyEnum.Value1;  // 열거형 값을 정수로 변환
MyEnum enumValue = (MyEnum)intValue;  // 정수를 열거형으로 변환

 

switch문과 호환성

switch(enumValue)
{
    case MyEnum.Value1:
        // Value1에 대한 처리
        break;
    case MyEnum.Value2:
        // Value2에 대한 처리
        break;
    case MyEnum.Value3:
        // Value3에 대한 처리
        break;
    default:
        // 기본 처리
        break;
}