Я являюсь виртуальным новичком в программировании и пытаюсь понять простую часть объектно-ориентированного программирования. Я заранее извиняюсь, если ответ на мой вопрос кажется очевидным, но я попытался найти похожие примеры в Интернете с помощью google и youtube, но, к сожалению, ничего не подходит для счета. С учетом сказанного здесь мой вопрос.
Я пытаюсь сделать простой инвентарь видеоигр, похожий на тот, который вы увидите в RPG, например Final Fantasy VI или Chrono Trigger. У меня возникают проблемы с созданием элементов инвентаря. Я хотел бы помочь с тем, как создать один объект, который определяет один элемент, например, зелье. Я знаю, что здесь будет указано несколько параметров:
Я хотел бы помочь с синтаксисом подключения этих параметров в одном объекте. Позже я буду использовать данные, чтобы я мог создать массив, который показывает только ItemText и количество для игрока. Любая помощь или места были бы оценены.
Заранее благодарю вас, Delita
На этот вопрос есть несколько уровней, поэтому я дам вам просто упрощенную часть. То, что вы хотите использовать, называется классом, который определяет структуру данных и функциональность ваших объектов. Затем вы создаете столько экземпляров этого класса, сколько вам нужно.
(Я опустил различные оптимизации и общие методы программирования (например, поместив классы в свои собственные файлы, передав объекты в функции по ссылке из приведенного ниже примера кода, так как вы сказали, что вы новичок), вы должны сделать это, когда будете более опытный!)
#include <string> // include the code for using std::string
#include <iostream> // include the code for using std::cout and std::endl
// Class Declaration
class Item
{
public:
// constructor, used when creating an instance of the object
Item(std::string itemName, std::string itemDesc, int effect, int buyCost, int sellCost);
// member functions, used to get copies internal data
std::string getItemName();
std::string getItemDesc();
private:
// private member variables, where internal data is stored
std::string m_itemName;
std::string m_itemDesc;
int m_effect;
int m_buyCost;
int m_sellCost;
};
// Class definition
Item::Item(std::string itemName, std::string itemDesc, int effect, int buyCost, int sellCost)
{
m_itemName = itemName;
m_itemDesc = itemDesc;
m_effect = effect;
m_buyCost = buyCost;
m_sellCost = sellCost;
}
std::string Item::getItemName()
{
return m_itemName;
}
std::string Item::getItemDesc()
{
return m_itemDesc;
}
// main function
int main()
{
// create a new instance of your Item class, using the parameters you specified in your question
Item potion("Potion", "Regain 50 HP", 50, 50, 25);
// output the results of your new instance functions
std::cout << "Item Name: " << potion.getItemName() << std::endl;
std::cout << "Item Description: " << potion.getItemDesc() << std::endl;
// Create a second instance of your class with different parameters
Item superPotion("Super Potion", "Regain 100 HP", 100, 75, 50);
// output the results of your second instance functions
std::cout << "Item Name: " << superPotion.getItemName() << std::endl;
std::cout << "Item Description: " << superPotion.getItemDesc() << std::endl;
return 0;
}
output: Название предмета: Potion Item Описание: Восстановление 50 HP
const std::string&
, для средства доступа рассмотрим const std::string& getItemName() const
. PS: я не -1 человек,
Возможно, вы ищете дизайн, который поможет вам начать работу.
Поскольку вы сказали, что являетесь новичком, я избегу полиморфизма, шаблонов и всего остального пуха.
Здесь очень простой дизайн:
ItemProperty: Говорит, что делает предмет и насколько.
struct ItemProperty
{
enum effectType {
PLAYER_HP,
PLAYER_MP,
CURE_POISON,
REVIVE,
ERROR
} ;
ItemProperty (const effectType effect = ERROR, int magnitude = 0) ;
private:
int magnitude ;
effectType effect ;
};
ItemProperty::ItemProperty (const effectType effect, int magnitude) : effect (effect), magnitude (magnitude)
{
}
Item: Предмет, который вы хотели в элементе.
class Item
{
public:
Item () ;
Item (const std::string &name, const std::string &description, const ItemProperty &itemProperty,
const int buyValue, const int sellValue) ;
private:
std::string name ;
std::string desciption ;
ItemProperty itemProperty ;
int buyValue ;
int sellValue ;
};
Item::Item () : buyValue (0), sellValue (0)
{
}
Item::Item (const std::string &name, const std::string &description, const ItemProperty &itemProperty,
const int buyValue, const int sellValue)
: name (name), desciption (description), itemProperty (itemProperty),
buyValue (buyValue), sellValue (sellValue)
{
}
Главная: Создание зелье
int main (void)
{
Item potion ("Potion", "Regain 50 HP", ItemProperty (ItemProperty::PLAYER_HP, 50), 50, 25) ;
return 0 ;
}
После того, как вы лучше поймете на программирование, вы сможете найти лучшие проекты, чем это. Но пока, держите это просто.