Концептуальная реализация апгрейда оружия в игре - C#
Формулировка задачи:
Есть игра в которой есть оружие. Например у него есть УРОН, ВРЕМЯ ПЕРЕЗАРЯДКИ, КОЛ-ВО ПАТРОНОВ В МАГАЗИНЕ и ВЕС оружия. Не могу концептуально врубиться как реализовать чтобы каждый параметр имел, например, 4 стадии улучшения, соответственно для каждой стадии своя цена (рассчитывается динамически в зависимости от стоимости пушки и некоего коэффициента для данного параметра). Все это дело сохранялось потом каким-то образом, грубо говоря "что сереализовать?" При этом чтобы можно было добавляя новое оружие в игру автоматически присваивать возможность улучшения.
Еще вдогонку вопрос как нормальные люди реализуют такую схему когда у каждой стадии есть имя и описание:
Может создать класс с константами улучшений и описания?
name[0] = "УРОН"; desc[0,0] = "пули из серебра"; desc[0,1] = "улучшенные механизмы"; name[1] = "КОЛ-ВО ПАТРОНОВ"; desc[1,0] = "увеличение обоймы"; desc[1,1] = "двойной магазин"; for(int i =0; i < updates; i++) { Modding newMod = new Modding(); newMod.name = name[i]; for(int k =0; k < desc.GetLength(2); k++) { newMod.desc = desc[k]; //рисуем кнопку с описанием } }
Решение задачи: «Концептуальная реализация апгрейда оружия в игре»
textual
Листинг программы
[Serializable] public class Weapon : List<IGameComponent> { } [Serializable] public class Damage : IGameComponent { private float[] prices = {2f, 3.5f, 4f, 5.5f}; private string[] names = { "Стандарт", "Стандарт +", "Профи", "Супер" }; public int UpgradeLevel { get; set; } public float PriceKoeff { get { return prices[UpgradeLevel]; } } public string Name { get { return names[UpgradeLevel]; } } } public interface IGameComponent { int UpgradeLevel { get; set; } float PriceKoeff { get; } string Name { get; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д