2017-02-04 8 views
2

私は同じ文字を追加するために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); 

}。

+0

健康を低下させる原因となるコードを表示する必要があります...そして、なぜベクトルにポインタを複製していますか? – greenshade

+0

uF2を作成する必要がないために、uF3 ... – MrFreeze

+0

[mcve]が必要です。特に、 'user.t_pokemon'と' uF1'、 'uW3'などの宣言は何ですか? –

答えて

0

問題は、ベクトルにポインタのコピーが含まれていて、実際のオブジェクトのコピーが異なることと同じではないことです。

オブジェクトコピーを達成するために、同じポインタを何度も渡しているようです。

すべてのオブジェクトを宣言してから、そのアドレスをベクターに追加する必要があります。

その他の注意:使用するオブジェクトごとに変数を作成する必要はありません。また、オブジェクトの配列を作成することもできます。

+0

ありがとうございます。私はそれを修正した、私は静的な火災uF1に変更しました[5] – MrFreeze

関連する問題