개요
오늘은 C#에서 중요한 키워드 중 하나인 const에 대해 자세히 알아보겠다.
const란?
const는 "constant"의 줄임말로, 한번 값이 할당되면 절대 변경할 수 없는 상수를 선언할 때 사용하는 키워드다.
변수와 달리 const로 선언된 값은 프로그램 실행 중에 절대 바뀔 수 없다.
const의 특징
- 선언과 동시에 초기화가 필요
- 컴파일 타임에 값이 결정
- 모든 기본 데이터 타입(int, string, double 등)에 사용 가능
- 메서드의 반환값으로는 초기화할 수 없음
사용예시
public class GameConstants
{
// 게임 기본 설정 관련 상수
private const string GAME_TITLE = "Dragon Quest";
private const int MAX_PLAYERS = 4;
private const int MAX_LEVEL = 99;
// 캐릭터 스탯 관련 상수
private const int BASE_HP = 100;
private const int BASE_MP = 50;
private const double CRITICAL_MULTIPLIER = 1.5;
public static void Main()
{
// 게임 시작 시 기본 정보 출력
Console.WriteLine($"게임 제목: {GAME_TITLE}");
Console.WriteLine($"최대 플레이어 수: {MAX_PLAYERS}명");
Console.WriteLine($"최대 레벨: {MAX_LEVEL}");
Console.WriteLine($"기본 체력: {BASE_HP}");
Console.WriteLine($"기본 마나: {BASE_MP}");
Console.WriteLine($"크리티컬 데미지: 기본 공격력 x {CRITICAL_MULTIPLIER}");
}
}
const의 활용법
1. 게임 아이템 설정
public class ItemConstants
{
public const int MAX_INVENTORY_SLOTS = 20;
public const int MAX_EQUIPMENT_SLOTS = 8;
public const int MAX_STACK_SIZE = 99;
public const double SELL_PRICE_RATIO = 0.5; // 판매가는 구매가의 50%
}
2. 게임 밸런스 상수
public class GameBalance
{
public const float EASY_MODE_MULTIPLIER = 0.8f; // 쉬움 난이도 데미지 계수
public const float NORMAL_MODE_MULTIPLIER = 1.0f; // 보통 난이도 데미지 계수
public const float HARD_MODE_MULTIPLIER = 1.5f; // 어려움 난이도 데미지 계수
public const int MAX_PARTY_MEMBERS = 4; // 최대 파티원 수
public const int RESPAWN_TIME = 30; // 부활 대기 시간(초)
}
3. 캐릭터 스킬 관련 상수
public class SkillConstants
{
// 스킬 쿨타임(초)
public const float FIREBALL_COOLDOWN = 5.0f;
public const float HEAL_COOLDOWN = 8.0f;
public const float ULTIMATE_COOLDOWN = 60.0f;
// 스킬 소모값
public const int FIREBALL_MP_COST = 30;
public const int HEAL_MP_COST = 50;
public const int ULTIMATE_MP_COST = 100;
}
이렇게 게임 개발에서는 const를 사용하여 게임의 기본 설정값, 밸런스 수치, 아이템 관련 제한값 등을 관리할 수 있다.
이러한 값들을 상수로 관리하면 게임 밸런스 조정이나 패치 시 한 곳에서 편리하게 수정할 수 있다는 장점도 있다.
또한 매직 넘버(코드 안에 직접 입력된 숫자)를 없애고 의미 있는 이름의 상수를 사용함으로써 코드의 가독성도 높일 수 있다.
728x90
반응형
'C#문법' 카테고리의 다른 글
[C# 문법] Part19 프로퍼티(Property) (3) | 2025.02.02 |
---|---|
[C# 문법] Part18 접근 제한자 (public, private, protected) (2) | 2025.02.02 |
[C# 문법] Part16 static 한정자 (1) | 2024.10.19 |
[C#문법] Part15 this 키워드 (2) | 2024.10.12 |
[C#문법] Part14 new 연산자 (7) | 2024.10.09 |