Sto usando C++17 su Windows per un video gioco 2D di tipo RPG retrò. Ho creato un vettore del tipo seguente:
In un'altra classe (di nome GamePanel) ho dichiarato il seguente attributo:
Inserisco un dei tanti puntatori ad un oggetto (ne esistono varie classi di oggetti derivati da Entity) nel seguente modo:
Ora questo vettore obj possiede degli elementi appartenenti alla mappa 1 del gioco.
Vorrei ora creare nello stesso vettore un insieme di elementi appartenenti alla mappa 2 del gioco, che quindi conterrà altre istanze di altri oggetti derivati da Entity. In questo modo posso riferirmi ai soli oggetti di una data mappa e disegnarli nel gioco.
Come posso dichiarare questo vettore con le caratteristiche che ho appena descritto ?
C++:
class Entity
{
public:
// coordinate mondo: la mappa del mondo
int worldX = 0, worldY = 0;
std::string name;
public:
Entity( );
~Entity( );
virtual void draw( );
};
In un'altra classe (di nome GamePanel) ho dichiarato il seguente attributo:
C++:
std::vector<Entity*> obj;
Inserisco un dei tanti puntatori ad un oggetto (ne esistono varie classi di oggetti derivati da Entity) nel seguente modo:
C++:
class OBJ_Door : public Entity
{
public:
OBJ_Door( )
{
name = "Door";
}
void draw( ) override;
};
void foo( )
{
int i = 0;
Entity* tmp = new OBJ_Door( );
GamePanel::GetInstance()->obj.push_back(tmp);
GamePanel::GetInstance()->obj.at(i)->worldX = 10 ;
GamePanel::GetInstance()->obj.at(i)->worldY = 28;
i++;
tmp = new OBJ_Door( );
GamePanel::GetInstance()->obj.push_back(tmp);
GamePanel::GetInstance()->obj.at(i)->worldX = 30;
GamePanel::GetInstance()->obj.at(i)->worldY = 8;
}
Ora questo vettore obj possiede degli elementi appartenenti alla mappa 1 del gioco.
Vorrei ora creare nello stesso vettore un insieme di elementi appartenenti alla mappa 2 del gioco, che quindi conterrà altre istanze di altri oggetti derivati da Entity. In questo modo posso riferirmi ai soli oggetti di una data mappa e disegnarli nel gioco.
Come posso dichiarare questo vettore con le caratteristiche che ho appena descritto ?