When the need arises to frequently create and destroy object…
When the need arises to frequently create and destroy objects in a computer software such as a game, we can reuse objects to avoid fragmentation in memory. Consider a game where the player can shoot projectiles with a button. Rather than destroying the object on a collision or at a maximum range, we can instead deactivate it. Create a Particle class initialized with a position (x, y), a velocity (vx, vy), and a lifetime all in double format. Additionally, include a boolean (alive) to determine if the particle will be updated and a pointer from each particle to the next particle. Set the default values to 0, false, and the pointer to the next in the chain with the last pointer to NULL. There are 5 doubles, 1 bool, and 1 pointer. The first function you’ll create is fill(). Given some int (n), it will continue to append a particle to the end of the current chain until there are a total of (n) particles. Create a second function alive() which returns the number of particles that are alive. Feel free to copy and paste the below template into your answer box and then fill it. class Particle { public: // 1. Define member variables // 2. Declare constructor and member functions };// 3. Define constructor // 4. Add logic to the fill() method Particle* Particle::fill(int n){ // returns the head which precedes n particles // these will all have the default values }// 5. Add logic to count_alive() method int Particle::count_alive(){ // this would return the number of alive particles}// 6. State the worst case time complexity of your fill() and count_alive() method