C ++ Создание объекта с несколькими параметрами

0

Я являюсь виртуальным новичком в программировании и пытаюсь понять простую часть объектно-ориентированного программирования. Я заранее извиняюсь, если ответ на мой вопрос кажется очевидным, но я попытался найти похожие примеры в Интернете с помощью google и youtube, но, к сожалению, ничего не подходит для счета. С учетом сказанного здесь мой вопрос.

Я пытаюсь сделать простой инвентарь видеоигр, похожий на тот, который вы увидите в RPG, например Final Fantasy VI или Chrono Trigger. У меня возникают проблемы с созданием элементов инвентаря. Я хотел бы помочь с тем, как создать один объект, который определяет один элемент, например, зелье. Я знаю, что здесь будет указано несколько параметров:

  1. itemText = "Зелье";
  2. itemDesc = "Восстановить 50 HP";
  3. itemEffect = playerHP + 50;
  4. buyCost = 50;
  5. sellCost = 25;

Я хотел бы помочь с синтаксисом подключения этих параметров в одном объекте. Позже я буду использовать данные, чтобы я мог создать массив, который показывает только ItemText и количество для игрока. Любая помощь или места были бы оценены.

Заранее благодарю вас, Delita

  • 0
    Возможно, вы пытаетесь создать конструктор для объекта? cplusplus.com/doc/tutorial/classes
  • 0
    так в чем именно твоя проблема?
Теги:
oop

2 ответа

0
Лучший ответ

На этот вопрос есть несколько уровней, поэтому я дам вам просто упрощенную часть. То, что вы хотите использовать, называется классом, который определяет структуру данных и функциональность ваших объектов. Затем вы создаете столько экземпляров этого класса, сколько вам нужно.

(Я опустил различные оптимизации и общие методы программирования (например, поместив классы в свои собственные файлы, передав объекты в функции по ссылке из приведенного ниже примера кода, так как вы сказали, что вы новичок), вы должны сделать это, когда будете более опытный!)

#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

  • 0
    Для конструктора рассмотрим использование const std::string& , для средства доступа рассмотрим const std::string& getItemName() const . PS: я не -1 человек,
  • 0
    @XiaogeSu Я сказал в описании - я упустил это для простоты, поскольку они являются новыми.
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 ;
}

После того, как вы лучше поймете на программирование, вы сможете найти лучшие проекты, чем это. Но пока, держите это просто.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню