C ++多参数对象创建

时间:2013-12-24 19:33:33

标签: c++ oop

我是编程的虚拟初学者,我正在尝试理解面向对象编程的一个简单部分。如果我的问题的答案显而易见,我提前道歉,但我试图在网上找到类似的例子使用谷歌和youtube,但遗憾的是没有什么符合要求。据说这是我的问题。

我正在尝试创建一个简单的视频游戏广告资源,类似于您在RPG中看到的广告,例如最终幻想VI或Chrono Trigger。我遇到的问题是创建库存的项目。我想要帮助的是如何创建一个定义一个项目的对象,例如药水。我知道它将采用这里列出的多个参数:

  1. itemText =“Potion”;
  2. itemDesc =“重新获得50 HP”;
  3. itemEffect = playerHP + 50;
  4. buyCost = 50;
  5. sellCost = 25;
  6. 我想要帮助的是在一个对象中连接这些参数的语法。稍后我会使用这些数据,这样我就可以创建一个数组,只显示itemText和玩家要查看的数量。任何和所有帮助或地方将不胜感激。

    提前谢谢你, 迪利塔

2 个答案:

答案 0 :(得分: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)
{
}


项目:你想要的东西。

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 ;
}

一旦你对编程有了更好的把握,你就能找到比这更好的设计。但就目前而言,保持简单。

答案 1 :(得分:0)

这个问题有几个层次,所以我会给你一个简单的部分。您想要使用的是一种称为的东西,它定义了对象的数据结构和功能。然后,您可以根据需要创建该类的实例

(我省略了各种优化和常见的编程实践(例如将类放在他们自己的文件中,通过下面的示例代码将对象传递给函数,因为你已经说过你是新的 - 你应该google这两个当你更有经验的事情!)

#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's 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's functions
    std::cout << "Item Name: " << superPotion.getItemName() << std::endl;
    std::cout << "Item Description: " << superPotion.getItemDesc() << std::endl;

    return 0;
}

输出: 商品名称:药水 项目描述:恢复50 HP