我是编程的虚拟初学者,我正在尝试理解面向对象编程的一个简单部分。如果我的问题的答案显而易见,我提前道歉,但我试图在网上找到类似的例子使用谷歌和youtube,但遗憾的是没有什么符合要求。据说这是我的问题。
我正在尝试创建一个简单的视频游戏广告资源,类似于您在RPG中看到的广告,例如最终幻想VI或Chrono Trigger。我遇到的问题是创建库存的项目。我想要帮助的是如何创建一个定义一个项目的对象,例如药水。我知道它将采用这里列出的多个参数:
我想要帮助的是在一个对象中连接这些参数的语法。稍后我会使用这些数据,这样我就可以创建一个数组,只显示itemText和玩家要查看的数量。任何和所有帮助或地方将不胜感激。
提前谢谢你, 迪利塔
答案 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