sam nie wiem jak do tego problemu dobrze podejść więc nie mam zaimplementowanego tego jeszcze postaram się to wyjaśnić :
mam klasę, służy ona do dziedziczenia
#pragma once
class basic_part_model
{
public:
float x, y;
int hp;
virtual void move() = 0;
basic_part_model( void );
~basic_part_model( void );
};
enemy.h
#pragma once
#include <ctime>
#include "basic_part_model.h"
#include <math.h>
class enemy
: public basic_part_model
{
int BlueMovementStatus;
float r, kat;
public:
enum e_EnemyType { EnemyType_RedStandard, EnemyType_None, EnemyType_RedSinMovement, EnemyType_Blue };
int i_Enemy_Type_Status;
static int EnemyNextDisp;
static int EnemyShootCurent;
clock_t EnemyShootTime;
int getHp();
void setHp( int );
int getX();
int getY();
void setX( int );
void setY( int );
void move();
enemy( int X, int Y, int HP, int Status );
enemy( void );
~enemy( void );
};
enemy.cpp
#include "enemy.h"
int enemy::EnemyNextDisp = 0;
int enemy::EnemyShootCurent = 0;
enemy::enemy( int XX, int YY, int HP, int SStatus )
{
this->BlueMovementStatus = 0;
this->EnemyShootTime = clock() + 1 * CLOCKS_PER_SEC;
this->x = XX;
this->y = YY;
this->hp = HP;
this->kat = 0;
this->i_Enemy_Type_Status = SStatus;
}
enemy::enemy( void )
{
}
enemy::~enemy( void )
{
}
int enemy::getHp()
{
return this->hp;
}
int enemy::getX()
{
return this->x;
}
int enemy::getY()
{
return this->y;
}
void enemy::setX( int XX )
{
this->x = XX;
}
void enemy::setY( int YY )
{
this->x = YY;
}
void enemy::move()
{
kat += 0.2;
if( kat == 10 ) kat = 0;
if( this->i_Enemy_Type_Status == this->EnemyType_RedSinMovement )
this->y =( this->y + 10 * cos( kat ) );
else if( this->i_Enemy_Type_Status == this->EnemyType_Blue )
{
if( this->BlueMovementStatus++< 50 )
x -= 2;
else if( this->BlueMovementStatus++> 50 && this->BlueMovementStatus++< 300 )
;
else
x -= 2;
}
else if( this->i_Enemy_Type_Status == this->EnemyType_RedStandard )
this->y =( - 0.000307857421019121 * pow( x, 2 ) ) -( 0.016297215892986 * pow( x, 1 ) ) +( 404.995899664151 * pow( x, 0 ) );
else
this->y =( 0.000307857421019121 * pow( x, 2 ) ) -( 0.216297215892986 * pow( x, 1 ) ) +( 174.995899664151 * pow( x, 0 ) );
x -= 2;
}
wydaje mi się że obiekty typu enemy, bullet, missle powinny mieścić się w jednym kontenerze np wektor
jak bym zrobił vecotr_enemy_typ1,vecotr_enemy_typ2,vecotr_enemy_typ3 to nie ma tematu robie kilka forów więcej do obsługi tych wektorów i nie ma problemu ale takie podejscie chyba nie jest dobre.
z tym, że enemy_typ1,enemy_typ2,enemy_typ3 różnią się od siebie zachowaniem, i z pośród istniejących na ekranie obiektów
chcę wybierać losowo z enemy_typ1 ale te wszystikie 3 typy chcę zawierać w jednym kontenerze np. wektorze
vector <enemy> v_enemy;
przykladowy vector v_enemy : [typ1,typ3,typ1,typ2,typ1,typ3,typ2]
mogę zliczać do tablicy intów które typy odpowiadają typowi 1 i mieć tablicę np [0,2,4]
i potem do tej tablicy się odoływać dobre jest to podejście ?
lub dodać zmienną np int type; i odwoływać się poprzez składnik klasy i tworzyć tablicę do lozsowania którą opisałem wyżej czyli [0,2,4]
sama funkcja mmove z pliku enemy.cpp zostanie zmieniona to stare podejscie bez dziedziczenia