diff --git a/source/code/BallManager.hpp b/source/code/BallManager.hpp new file mode 100644 index 0000000..0a65675 --- /dev/null +++ b/source/code/BallManager.hpp @@ -0,0 +1,137 @@ +/* +=========================================================================== +blockattack - Block Attack - Rise of the Blocks +Copyright (C) 2005-2017 Poul Sander + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see http://www.gnu.org/licenses/ + +Source information and contacts persons can be found at +http://www.blockattack.net +=========================================================================== +*/ + +#ifndef BALLMANAGER_HPP +#define BALLMANAGER_HPP + + +extern GlobalData globalData; + +//other ball constants: +const double gravity = 200.8; //acceleration +const double startVelocityY = 50.0; +const double VelocityX = 50.0; +const int ballSize = 16; +const double minVelocity = 200.0; + +//The small things that are faaling when you clear something +class ABall { +private: + double x = 0.0; + double y = 0.0; + double velocityY = 0.0; + double velocityX = 0.0; + int color = 0; + unsigned long int lastTime = 0; +public: + bool inUse = false; + + ABall() { + } + + //constructor: + ABall(int X, int Y, bool right, int coulor) { + double tal = 1.0+((double)rand()/((double)RAND_MAX)); + velocityY = -tal*startVelocityY; + lastTime = SDL_GetTicks(); + x = (double)X; + y = (double)Y; + color = coulor; + if (right) { + velocityX = tal*VelocityX; + } + else { + velocityX = -tal*VelocityX; + } + } //constructor + + void update() { + double timePassed = (((double)(SDL_GetTicks()-lastTime))/1000.0); //time passed in seconds + x = x+timePassed*velocityX; + y = y+timePassed*velocityY; + velocityY = velocityY + gravity*timePassed; + if (y<1.0) { + velocityY=10.0; + } + if ((velocityY>minVelocity) && (y>(globalData.ysize-ballSize)) && (yglobalData.ysize+100 || ballArray[i].getX()>globalData.xsize || ballArray[i].getX()<-ballSize) { + ballArray[i].inUse = false; + } + } + } + } //update + + +}; //theBallManager + +#endif /* BALLMANAGER_HPP */ + diff --git a/source/code/ExplosionManager.hpp b/source/code/ExplosionManager.hpp new file mode 100644 index 0000000..67a4590 --- /dev/null +++ b/source/code/ExplosionManager.hpp @@ -0,0 +1,107 @@ +/* +=========================================================================== +blockattack - Block Attack - Rise of the Blocks +Copyright (C) 2005-2017 Poul Sander + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see http://www.gnu.org/licenses/ + +Source information and contacts persons can be found at +http://www.blockattack.net +=========================================================================== +*/ + +#ifndef EXPLOSIONMANAGER_HPP +#define EXPLOSIONMANAGER_HPP + +//a explosions, non moving +class AnExplosion { +private: + int x = 0; + int y = 0; + Uint8 frameNumber = 0; +#define frameLength 80 + //How long an image in an animation should be showed +#define maxFrame 4 + //How many images there are in the animation + unsigned long int placeTime = 0; //Then the explosion occored +public: + bool inUse = false; + + AnExplosion() { + } + + //constructor: + AnExplosion(int X, int Y) { + placeTime = SDL_GetTicks(); + x = X; + y = Y; + frameNumber=0; + } //constructor + + //true if animation has played and object should be removed from the screen + bool removeMe() { + frameNumber = (SDL_GetTicks()-placeTime)/frameLength; + return (!(frameNumberminVelocity) && (y>(globalData.ysize-ballSize)) && (yglobalData.ysize+100 || ballArray[i].getX()>globalData.xsize || ballArray[i].getX()<-ballSize) { - ballArray[i].inUse = false; - } - } - } - } //update - - -}; //theBallManager - static BallManager theBallManager; -//a explosions, non moving -class AnExplosion { -private: - int x = 0; - int y = 0; - Uint8 frameNumber = 0; -#define frameLength 80 - //How long an image in an animation should be showed -#define maxFrame 4 - //How many images there are in the animation - unsigned long int placeTime = 0; //Then the explosion occored -public: - bool inUse = false; - - AnExplosion() { - } - - //constructor: - AnExplosion(int X, int Y) { - placeTime = currentTime; - x = X; - y = Y; - frameNumber=0; - } //constructor - - //true if animation has played and object should be removed from the screen - bool removeMe() { - frameNumber = (currentTime-placeTime)/frameLength; - return (!(frameNumber