我正在为我的编程类用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
那么最好的方法是使用什么工具呢?
答案 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;
实现这个功能取决于你,我想你必须已经知道如何去做。