在C ++中存储简单数据的最佳方法

时间:2014-05-05 20:59:03

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

我正在为我的编程类用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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

你可以写一些像这样的结构:

// 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实例。

以下示例遵循您的seudocode:

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

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