Хорошо, поэтому я просмотрел весь этот сайт и несколько других (но, пожалуйста, дайте мне знать, если есть ссылка на аналогичный вопрос), и я получаю все подробности о том, как система инвентаризации должно сработать. Мой вопрос исходит из очень широкой, общей перспективы. И это только для консольной текстовой RPG. Как мне структурировать классы для элементов? То, что я имею в виду/до сих пор что-то вроде этого:RPG Система инвентаризации игр
// Item.h
class Item {
public:
int Id;
std::string Name;
bool CanUse, CanEquip;
virtual void Use();
}
class Weapon: public Item {
public:
int Attack, Defense, Health; // stat changes when equipped
void Use() { std::cout << "Can't use\n"; }
}
class Sword: public Weapon {
// constructor defining stat changes for a sword
// and to define Name = "Sword"
}
Так что я должен быть наследованию, что много раз или там что-то проще, я мог бы делать? В конце концов, у меня будут другие виды оружия, но мне кажется, что унаследовать каждого из них от Weapon
гораздо более громоздко, чем каким-то другим способом я мог бы это сделать?
Возможно, у меня могло быть перечисление или структура в пределах Weapon
, который определяет каждый тип оружия? Если я сделаю это как код выше, я бы, вероятно, фактически переместил функцию virtual void Use();
в класс, class Consumables: public Item
, так как это должны быть единственные «полезные» вещи.
Заранее благодарю всех, кто хочет помочь. Я сам научился всему, что знаю с книгами и электронные учебники, поэтому я очень неопытный :)
Просто примечание об именовании. Вероятно, стоит использовать более подробные описания. Например, int attackModifier, int uniqueItemId. Создание описательных переменных может сэкономить вам некоторое время, когда вы вернетесь через год и должны отредактировать этот код. В другом случае вам может понадобиться описание элемента, чтобы пользователь мог навешивать элемент и получать имя и данные. – user3853544
@ user3853544 Вот что я на самом деле сделал в коде, который я запускаю. Я просто не хотел набирать этот материал здесь, чтобы сэкономить место. Я даже не знал, что могу сделать описание предмета, так что это полезно и круто. Благодаря! –
Обычно я делаю ограниченное количество элементов и иду с строкой описания. Помимо немного большего или меньшего урона и достижения, меч - это меч, насколько это касается игровой механики. У меня будет другой класс, если меч сделает что-то необычное, как есть души. Вот ответ, который я написал некоторое время назад, который может быть полезен: http://stackoverflow.com/questions/41003408/c-determine-if-class-can-use-an-object-text-rpg-game/41006740# 41006740 – user4581301