【问题标题】:Best way to store simple data in C++ [closed]在 C++ 中存储简单数据的最佳方法 [关闭]
【发布时间】:2014-05-05 20:59:03
【问题描述】:

我正在为我的编程课用 C++ 编写一个简单的项目。我正在制作一个在控制台中运行的简单口袋妖怪战斗模拟器

我遇到的问题是,存储口袋妖怪数据的最佳方式是什么?我必须将诸如 HP、Attack、Defense 等内容存储在一个文件中,但我不确定解决此问题的最佳方法是什么。我知道一些读写文件的基础知识,但没有什么能满足我想要做的事情。我在考虑使用 YAML,但是在花了几个小时试图弄清楚之后我放弃了,因为我认为我不需要那么复杂的东西

我想我想要做的一些伪代码会是这样的

Open file
find string with name "pikachu"
find defense for pokemon pikachu
defense = pikachu defense
find HP for pokemon pikachu
HP = pikachu HP
find attack for pokemon pikachu
attack = pikachu attack

那么最好的方法是什么,使用工具?

【问题讨论】:

  • 使用该伪代码,您可能会从一个定义“口袋妖怪”对象的类中实例化一个对象,该对象具有防御、生命值、攻击统计等作为变量。在制作对象时读取文件并调用方法来设置这些变量。当您使用它时,请查看a good book
  • 你需要一个精灵球类.....

标签: c++ visual-studio-2012 console-application yaml fstream


【解决方案1】:

你可以这样写一些结构体:

// A separate struct for stats allow you to add and remove
// stats parameters without touch pokemon struct.
struct stats
{
    int hp;
    int attack;
    int defense;
};

typedef struct stats stats_t;



struct pokemon
{
    string name;
    stats_t stats;

    // You can also add some behaviour to your pokemons.

    void defend_from_attack(int incomming_attack)
    {
        // And for instance.
        stats.defense -= incomming_attack;
    }

    void attack(pokemon attacked_pokemon)
    {
        attacked_pokemon.defend_from_attack(stats.attack);
    }

    // This is cool right?
    void evolve(stats_t new_stats)
    {
        stats = new_stats;
    }

}

您现在只需要一个函数来读取您放置宠物小精灵统计数据的文件(或多个文件)。如果你使用 YAML 就更容易了。该函数必须读取文件并返回带有所需数据的pokemon 实例。

以下示例遵循您的伪代码:

// Assume the YAML file has been open.

// find string with name "pikachu"
struct pokemon pikachu;
// find defense for pokemon pikachu
// defense = pikachu defense
pikachu.stats.defense = defense;
//find HP for pokemon pikachu
//HP = pikachu HP
pikachu.stats.hp = HP;
//find attack for pokemon pikachu
//attack = pikachu attack
pikachu.stats.attack = attack;

实现这个功能取决于你,我想你一定已经知道如何去做了。

【讨论】:

  • 非常感谢,这有助于清除一切
【解决方案2】:

在运行时存储这些数据的最佳方式是为 pokemon 创建一个类结构。这意味着您将拥有一个名为 pokemon 的类,它将具有各种属性,例如名称、生命值和攻击。如果您想在多次执行中保存此数据;你是对的,需要一些文件 I/O。一旦你有了类结构,就很容易编写函数来将 pokemon 数据写入和读取到文件中。如果您不熟悉面向对象,请查看此链接以获取更多信息。 http://www.cplusplus.com/doc/tutorial/classes/

【讨论】:

    猜你喜欢
    • 2016-08-27
    • 2020-08-10
    • 2021-02-11
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多