[TIL]2025-07-10_C# TextRPG λ§λ€κΈ°
ποΈ TIL - μ½μ κΈ°λ° RPG μμ€ν ꡬν (C#)
π§ μ€λ ꡬνν λ΄μ©
- μ½μ κΈ°λ° RPG κ²μ μμ€ν ꡬμΆ
- νλ μ΄μ΄ μν 보기 κΈ°λ₯ ꡬν
- μΈλ²€ν 리 μ₯μ°© κ΄λ¦¬ μμ€ν
- μμ μμ μμ΄ν ꡬ맀 κ°λ₯
- λμ μ μ₯ λ° κ²°κ³Ό μ²λ¦¬ (μ±κ³΅/μ€ν¨)
- λ 벨μ λ° μ μ§ μ΄λ²€νΈ
- κ²μ λ΄ κ³¨λ, HP, 곡격λ ₯/λ°©μ΄λ ₯ λ°μ μ²λ¦¬
π μ€λ νμ΅ν κ°λ
πΈ enum
- μλ―Έ μλ μμ μ§ν©μ λ§λ€κΈ° μν ν€μλ
- κ°λ μ± ν₯μ, μ€ν λ°©μ§, 쑰건 μ²λ¦¬ μ©μ΄
- μμ:
```csharp enum CharacterState { Idle, Attack, Damaged, Dead }
πΈ μΊ‘μν (Encapsulation) κ°μ²΄μ λ΄λΆ λ°μ΄ν°λ₯Ό 보νΈνλ κ°λ
private νλ + public λ©μλλ‘ μ μ΄
μμ:
csharp λ³΅μ¬ νΈμ§ private int hp; public void TakeDamage(int dmg) { hp -= dmg; } πΈ λ©μλ λ°νν λ°νν μ©λ μμ void λ°ν μμ PrintMenu() int μ μ λ°ν int GetLevel() bool 쑰건 νλ¨ bool IsDead() string ν μ€νΈ λ°ν string GetStatusText()
πΈ foreach vs for foreach: 리μ€νΈλ₯Ό μννλ©΄μ μμλ₯Ό μ½μ λ 
for: μΈλ±μ€λ₯Ό μ΄μ©ν΄ μ κ·Όμ΄ νμν λ 
λΉλ¨ μ΄λ²λΏ μλλΌ κ·Έλμμ κ°μΈ 곡λΆλ/μκ³ λ¦¬μ¦/νλ‘μ νΈλλ§λ€ forλ¬Έκ³Ό foreachμ μ₯λ¨μ μ μ ꡬλΆνμ§ λͺ»νμλ€.
forλ¬ΈμΌλ‘ μΆ©λΆνλ€λ©΄ foreachλ₯Ό μ μ¨μΌν κΉβ¦ κ·Έλ₯ μ΅μνκ±° μ°λκ² μ΅κ³ μλκΉ μΆμλ€. λ€λ§, μμ /μ€ν¬κ³Όκ°μ΄ μ£ΌκΈ°μ μΌλ‘ λκ° μ λ³νμ§μλ κ°μ²΄κ° μλ€κ³ νλ©΄ foreachλ¬Έμ΄ ν¨μ¬ κ°κ²°νκ³ λͺ
νν΄μ§λ€.
μ΄ λΆλΆμ΄ μ΄λ² νλ‘μ νΈμμ κ°μ₯ ν¬κ² κΉ¨λ¬μμ μ»μ λ΄μ©μΈλ―νλ€. λͺ¨λ μ½λμμ main.csμλ€κ° λ€ κ΅¬νμνλ€. μ½λλ, μ μλνλ©΄ κ·Έλ§μ΄λ€. λΌκ³ μκ°νλ€. κ·Όλ° μ΄ μκ°μΌλ‘ νλ€λ³΄λ κ°λ¨ν νλ‘κ·Έλ¨ μ‘°μ°¨ main.csμμ 1200μ€μ΄λμλ€. λ¬Όλ‘ 1200μ€μ΄ λ§μ건 μλλ€. λ€λ§, λ°λ³΅λλ μ½λκ° λ무 λ§μμβ¦ μ΅μνμ§λ μμ§λ§ μ²μ μ°λ ꡬ쑰체 ν¨μκ° μμΌλ‘μ λμ 보μμμ μκΈ΄νκ² κΊΌλ΄μΌλ€.
μ΄νμ νλ‘μ νΈν λλ κ°λ₯νλ©΄ ν΄λμ€/λ€μ΄μ΄κ·Έλ¨ μ°μ΅μ λ§μ΄ ν΄μΌκ² λ€.
csharp λ³΅μ¬ νΈμ§ foreach (Item item in inventory) { if (item.IsEquipped) attack += item.Value; }
π§ λ°°μ΄ μ / λλ μ μ½μ νκ²½μμλ μΆ©λΆν λͺ°μ κ° μλ RPG κ²μμ λ§λ€ μ μλ€.
μΊ‘μνλ enum κ°μ OOP κ°λ μ΄ κ²μ ꡬ쑰νμ μ λ§ μ€μνλ€λ κ±Έ λλ
μ ν¬ λ‘κ·Έλ₯Ό μ€λ₯Έμͺ½μ μΆλ ₯νκ±°λ ν μ€νΈ μμ, ν¨κ³Όλ₯Ό μ£Όλ κ²λ CLIμμ UXμ μν₯ μ€
μμ΄ν μ μ₯μ°©νκ±°λ λ₯λ ₯μΉλ₯Ό μ μ©νλ κ³Όμ μμ λ°μ΄ν° νλ¦μ μ€κ³νλ κ°κ°μ΄ κΈΈλ¬μ§
β κ°μ ν μ μ ν¬ μμ€ν μ ν΄λμ€ λ¨μλ‘ λ λΆλ¦¬ν μ μμ (BattleManager, Enemy, Skill λ±)
λ 벨μ 쑰건μ switch λλ λμ λλ¦¬λ‘ κ°κ²°ν κ°λ₯
λ°λ³΅λλ μ½λ(λμ μ€ν¨, λ 벨μ μ΄λ²€νΈ λ±)λ₯Ό ν¨μννλ©΄ μ μ§λ³΄μκ° μ¬μμ§
