私は同じ文字を追加するためにpush_backを使用していますが、何らかの理由でこれらの文字のすべてが常に同じ統計情報を持っています。ベクターで文字を区別するにはどうすればよいですか? SFML 2.4.1
Battle.cpp:UF1の健康を小さくすれば
void Battle::InitalizeUser()
{
user.t_Pokemon.clear();
user.t_Item.clear();
user.currentPokemon_U = 0;
user.t_Pokemon.push_back(&uF1);
user.t_Pokemon.push_back(&uF1);
user.t_Pokemon.push_back(&uW3);
user.t_Pokemon.push_back(&uW3);
user.t_Pokemon.push_back(&uG5);
user.t_Pokemon.push_back(&uG5);
user.t_Item.push_back(&uI1);
user.t_Item.push_back(&uI2);
for (unsigned int i = 0; i < user.t_Pokemon.size(); i++)
{
user.t_Pokemon.at(i)->poke_health = 100;
user.t_Pokemon.at(i)->poke_isFainted = false;
}
assert(user.t_Pokemon.size() == 6);
assert(user.t_Item.size() == 2);
}
だから、すべてのUF1文字が同じ削減を被るだろうが、私は私ができるようにしたい、UF1が削減に苦しむすべての人を望んでいませんそれらを区別し、影響を受ける特定のキャラクタを1つだけ持つようにします。
どうすればいいですか?
Pokemon.cpp:
void Pokemon::attackNormal(Pokemon * opponentPokemon)
{
opponentPokemon->poke_health = opponentPokemon->poke_health - 20;
opponentPokemon->changeIfFainted();
assert(opponentPokemon->poke_health <= 100 && opponentPokemon->poke_health >= 0);
}
Battle.h:
class Battle
{プライベート:
static Trainer user;
static Trainer ash;
static IntRect user_Rect;
static IntRect ash_Rect;
// User's pokemon
static Fire uF1;
static Water uW3;
static Grass uG5;
static Item uI1;
static Item uI2;
}
UF1:Pokemon.h
class Fire : public Pokemon
{
public:
Fire();
Fire(string name);
virtual ~Fire();
void specialAttack(Pokemon * opponentPokemon);
void changeWeather();
void Draw(RenderWindow &window);
}。
健康を低下させる原因となるコードを表示する必要があります...そして、なぜベクトルにポインタを複製していますか? – greenshade
uF2を作成する必要がないために、uF3 ... – MrFreeze
[mcve]が必要です。特に、 'user.t_pokemon'と' uF1'、 'uW3'などの宣言は何ですか? –