사칙연산 함수 만들기

C#에서 덧셈, 뺄셈, 곱셈, 나눗셈 함수를 만드는 방법을 학습합니다. 함수 네이밍 팁과 체크리스트를 이해합니다.

덧셈, 뺄셈, 곱셈, 나눗셈 함수(function)

게임에서 점수 계산, 체력 회복, 데미지 계산 등에 사칙연산이 필요합니다.

public class GameCalculator : MonoBehaviour
{
    // 체력 회복 (덧셈)
    int HealPlayer(int currentHp, int healAmount)
    {
        return currentHp + healAmount;  // 더하기
    }
    
    // 데미지 받기 (뺄셈)
    int TakeDamage(int currentHp, int damage)
    {
        return currentHp - damage;  // 빼기
    }
    
    // 경험치 획득 (곱셈 - 보너스 배율)
    int GetExperienceWithBonus(int baseExp, int bonusMultiplier)
    {
        return baseExp * bonusMultiplier;  // 곱하기
    }
    
    // 체력 비율 계산 (나눗셈)
    float GetHealthPercentage(int currentHp, int maxHp)
    {
        return (float)currentHp / maxHp;  // 나누기 (float로 변환 필요)
    }
}

사용 예시

public class Player : MonoBehaviour
{
    public int hp = 100;
    public int maxHp = 100;
    public int exp = 0;
    
    void Start()
    {
        // 체력 회복
        hp = HealPlayer(hp, 30);  // 100 + 30 = 130
        Debug.Log("체력: " + hp);
        
        // 데미지 받기
        hp = TakeDamage(hp, 25);  // 130 - 25 = 105
        Debug.Log("체력: " + hp);
        
        // 경험치 보너스 (2배)
        exp = GetExperienceWithBonus(50, 2);  // 50 * 2 = 100
        Debug.Log("경험치: " + exp);
        
        // 체력 비율 계산
        float healthPercent = GetHealthPercentage(hp, maxHp);  // 105 / 100 = 1.05
        Debug.Log("체력 비율: " + (healthPercent * 100) + "%");
    }
}

실제 게임 활용:

public class CombatSystem : MonoBehaviour
{
    // 데미지 계산 (여러 요소 결합)
    int CalculateDamage(int baseDamage, int weaponPower, float criticalMultiplier)
    {
        int total = baseDamage + weaponPower;  // 덧셈
        return Mathf.RoundToInt(total * criticalMultiplier);  // 곱셈
    }
    
    // 체력 회복 (최대치 제한)
    int HealWithLimit(int currentHp, int healAmount, int maxHp)
    {
        int newHp = currentHp + healAmount;  // 덧셈
        if (newHp > maxHp)
        {
            return maxHp;  // 최대치 제한
        }
        return newHp;
    }
}

함수(function) 네이밍 팁

함수(function) 이름만 봐도 무엇을 하는지 알 수 있게 지어야 합니다. Unity 게임 개발에서는 동작을 명확히 표현하는 이름을 사용합니다.

  • ✅ 좋은 예:

    • CalculateDamage - 데미지 계산
    • GetPlayerHP - 플레이어 체력 가져오기
    • HealPlayer - 플레이어 회복
    • SpawnEnemy - 적 생성
    • CheckCollision - 충돌 확인
  • ❌ 나쁜 예:

    • func1, test, abc - 무엇을 하는지 알 수 없음
    • DoSomething - 너무 모호함
    • Calc - 축약어는 피하기

네이밍 규칙:

  • 동사로 시작 (Calculate, Get, Set, Check, Spawn 등)
  • 명확하고 구체적인 이름 사용
  • 너무 길지 않게 (20자 이내 권장)

함수(function) 작성 체크리스트(list)

  1. 함수(function) 이름: 기능을 명확히 표현하는가?

    • 예: CalculateDamage ✅ vs Calc
  2. 매개변수(variable)(parameter): 필요한 값들을 모두 받는가?

    • 예: HealPlayer(int currentHp, int healAmount)
    • 예: HealPlayer() - 얼마나 회복할지 모름 ❌
  3. 반환(return)(return value): 결과를 제대로 반환(return)하는가?

    • 예: int GetPlayerLevel() { return level; }
    • 예: void GetPlayerLevel() { Debug.Log(level); } - 반환(return) 안 함 ❌
  4. 재사용성: 다른 곳에서도 사용할 수 있는가?

    • 예: CalculateDamage(int base, int weapon) - 다양한 무기에 사용 가능 ✅
    • 예: CalculateSwordDamage() - 검에만 사용 가능 ❌

게임 개발 추가 체크리스트(list): 5. 에러(error) 처리: 잘못된 입력에 대한 처리가 있는가? (0으로 나누기 등) 6. Unity 연동: Unity 컴포넌트와 잘 연동되는가? 7. 성능: 불필요한 계산이 없는가?


← 목차로 돌아가기