Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Game.cpp */
- #include "Game.hpp"
- #include <sstream>
- void Game::Init()
- {
- mainWindow.create(sf::VideoMode(800, 600, 32), "NTI Zombie-Survival! _ALPHA_");
- mainWindow.display();
- std::srand(time(NULL));
- if(!zombieTexture.loadFromFile("img/zombie.bmp"))
- {
- printf("zombie.bmp could not be loaded");
- }
- for(int i = 0; i < 100; i++)
- blood[i] = NULL;
- Player1 = new Player();
- std::vector<Zombie>::iterator it;
- zombie.resize(100);
- iKillsMoreZombies = 10;//start value for more ZOMBIES =D=D=D=D=D
- iNrOfZombies = 5;
- zombieMultiplier = 1.6;
- for(int i = 0; i < iNrOfZombies; i++)
- {
- zombie.push_back(Zombie());
- zombie[i].Init(zombieTexture);
- }
- midtow = new Castle();
- if(!bloodLoad.loadFromFile("img/blood_splatter.bmp"))
- {
- printf("blood_splatter.bmp could not be loaded");
- }
- if(!bgTexture.loadFromFile("img/background.png"))
- {
- printf("background.jpg could not be loaded");
- }
- bg.setTexture(bgTexture);
- iKillCounter = 0;
- Kills.setPosition(750, 30);
- Kills.setColor(sf::Color::Black);
- GameState = Game::Running;
- gameLoop();
- }
- void Game::gameLoop()
- {
- /*mainWindow.draw(Player1->drawSprite());
- for(int i = 0; i < iNrOfZombies; i++)
- {
- mainWindow.draw(zombie[i].drawSprite());
- }
- mainWindow.display();*/
- while(mainWindow.isOpen())
- {
- sf::Event ev;
- while(mainWindow.pollEvent(ev))//in case you press that nice, big, red X... uhm, big nice x... *press*
- {
- switch(ev.type)
- {
- case sf::Event::Closed:
- GameState = Game::Exiting;
- break;
- default:
- break;
- }
- }
- switch(GameState)
- {
- case Running:
- if(midtow->getHealth() <= 0)// <= 0 means that tower is blown up, duh
- {
- GameState = Game::Lost;
- }
- //check for input
- if(Player1->getTime() > 50.0f)//lets the user move 20x/sec
- {
- input();
- Player1->restartClock();
- }
- for(int i = 0; i < iNrOfZombies; i++)//check to see if any of the zombies needs to move, in that case - move.
- {
- if(zombie[i].getTime() > 50.0f)
- {
- zombie[i].restartClock();
- moveZombie();
- break;
- }
- else
- {
- break;
- }
- }
- if(iKillCounter == iKillsMoreZombies && iNrOfZombies + 5 < 120)//add le more awesome zombies
- {
- for(int i = iNrOfZombies; i < iNrOfZombies + 5; i++)
- {
- zombie.push_back(Zombie());
- zombie[i].Init(zombieTexture);
- }
- iNrOfZombies += 5;
- iKillsMoreZombies *= zombieMultiplier;
- }
- //check collisions:
- collision();
- //draw everything on the screen
- drawScreen();
- break;
- case Exiting:
- Exit();
- break;
- case Paused:
- isPaused();
- break;
- case Lost:
- gameLost();
- break;
- }
- }
- }
- void Game::drawScreen()
- {
- //clear and draw sprites + display
- mainWindow.clear();//clear all previous stuff
- mainWindow.draw(bg);//draw background
- Kills.setString(KillsToString());//convert the integer of kills into a string
- mainWindow.draw(Kills);//draw number of kills
- drawZombies();//draw zombies
- mainWindow.draw(Player1->drawSprite());//draw player
- mainWindow.draw(midtow->drawSprite());//draw midtower
- mainWindow.draw(midtow->drawText());//draw number of lifes left
- mainWindow.display();//display all the things we have drawn
- }
- void Game::drawZombies()
- {
- /*for(int i = 0; i < iNrOfZombies; i++)
- {
- if(zombie[i] != NULL)
- {
- if(zombie[i]->isDead())
- {
- blood.setPosition(zombie[i]->getPosition());
- mainWindow.draw(blood);
- }
- }
- }*/
- int i = 0;
- //for(std::vector<Zombie>::iterator it = zombie.end(); it > zombie.begin(); it--)//loop through all zombies
- //{
- // if(zombie[i].isDead())
- // {
- // //blood.setPosition(zombie.at(i).getPosition());
- // //mainWindow.draw(blood);//draw blood instead of a zombie
- // for(int q = 0; q < iNrOfZombies; q++)
- // {
- // if(blood2[q] == NULL)
- // {
- // blood2[q] = new Blood(bloodLoad, zombie[i].getPosition());
- // zombie[i].becameBloody(true);
- // }
- // }
- // }
- // i++;
- //}
- for(; i < iNrOfZombies; i++)
- {
- if(blood[i] != NULL)
- {
- if(blood[i]->getTime() > 7)
- {
- delete blood[i];
- blood[i] = NULL;
- }
- else
- {
- mainWindow.draw(blood[i]->getSprite());
- }
- }
- }
- i = 0;
- for(std::vector<Zombie>::iterator it = zombie.begin() + iNrOfZombies; it > zombie.begin(); it--)
- {
- if(!zombie[i].isDead())
- {
- mainWindow.draw(zombie[i].drawSprite());//draw the zombie sprite since he's not killed
- }
- else if(zombie[i].getTimeDead() > 7)//zombie respawner
- {
- zombie[i].respawn();
- }
- i++;
- }
- //for(int i = 0; i < iNrOfZombies; i++)
- //{
- // if(zombie[i] != NULL)
- // {
- // if(!zombie[i]->isDead())//draw zombies
- // mainWindow.draw(zombie[i]->drawSprite());
- // else if(zombie[i]->getTimeDead() > 7)//respawn timer.
- // {
- // delete zombie[i];
- // /*zombie[i] = NULL;
- // zombie[i] = new Zombie(zombieTexture);*/
- // zombie.erase((zombie.begin() + i )-1);
- // }
- // }
- //}
- }
- void Game::collision()
- {
- sf::FloatRect plFl = Player1->getFR();
- sf::FloatRect caFl = midtow->getFR();
- sf::FloatRect zmFl;
- int i = 0;
- for(std::vector<Zombie>::iterator it = zombie.end(); it > zombie.begin(); it--)//10 zombies = 10 loops.
- {
- zmFl = zombie[i].getFR();
- if(plFl.intersects(zmFl))//checks for intersections
- {
- if(!zombie[i].isDead())
- {
- zombie[i].setKilled(true);//zombie is killed, woho
- for(int x = 0; x < iNrOfZombies; x++)
- {
- if(blood[x] == NULL)
- {
- blood[x] = new Blood(bloodLoad, zombie[i].getPosition());
- zombie[i].becameBloody(true);
- break;
- }
- }
- iKillCounter++;
- }
- }
- if(zmFl.intersects(caFl))
- {
- zombie[i].respawn();//respawn zombie at a new place
- midtow->redHealth();//reduce health on tower
- }
- i++;
- }
- }
- void Game::moveZombie()
- {
- int i = 0;
- for(std::vector<Zombie>::iterator it = zombie.end(); it > zombie.begin(); it--)
- {
- if(!zombie[i].isDead()) //check if the zombie is dead
- zombie[i].moveZombie(); //else move it
- i++;
- }
- //for(int i = 0; i < iNrOfZombies; i++)//worthless way to move zombie.. :C
- //{
- // if(zombie[i] != NULL)
- // {
- // if(!zombie[i]->isDead())
- // {
- // if(zombie[i]->getPosition().x <= midtow->getPosition().x + 20 &&
- // zombie[i]->getPosition().x >= midtow->getPosition().x - 20)
- // {
- // if(zombie[i]->getPosition().y <= midtow->getPosition().y)
- // {
- // if(zombie[i]->getRotation() != 0.0f)
- // {
- // zombie[i]->setRotation(0.0f);
- // }
- // zombie[i]->changePosition(0, zombie[i]->getMoveSpeed());
- // }
- // else
- // {
- // if(zombie[i]->getRotation() != 180.0f)
- // {
- // zombie[i]->setRotation(180.0f);
- // }
- // zombie[i]->changePosition(0, -zombie[i]->getMoveSpeed());
- // }
- // }
- // else if(zombie[i]->getPosition().y <= midtow->getPosition().y + 20 &&
- // zombie[i]->getPosition().y >= midtow->getPosition().y - 20)
- // {
- // if(zombie[i]->getPosition().x >= midtow->getPosition().x)
- // {
- // if(zombie[i]->getRotation() != 90.0f)
- // {
- // zombie[i]->setRotation(90.f);
- // }
- // zombie[i]->changePosition(-zombie[i]->getMoveSpeed(), 0);
- // }
- // else
- // {
- // if(zombie[i]->getRotation() != 270.0f)
- // {
- // zombie[i]->setRotation(270.0f);
- // }
- // zombie[i]->changePosition(zombie[i]->getMoveSpeed(), 0);
- // }
- // }
- // else if(zombie[i]->getPosition().x > midtow->getPosition().x &&
- // zombie[i]->getPosition().y > midtow->getPosition().y)
- // {
- // if(zombie[i]->getRotation() != 135.0f)
- // {
- // zombie[i]->setRotation(135.0f);
- // }
- // zombie[i]->changePosition(-zombie[i]->getMoveSpeed(), -zombie[i]->getMoveSpeed());
- // }
- // else if(zombie[i]->getPosition().x < midtow->getPosition().x &&
- // zombie[i]->getPosition().y > midtow->getPosition().y)
- // {
- // if(zombie[i]->getRotation() != 225.0f)
- // {
- // zombie[i]->setRotation(225.0f);
- // }
- // zombie[i]->changePosition(zombie[i]->getMoveSpeed(), -zombie[i]->getMoveSpeed());
- // }
- // else if(zombie[i]->getPosition().x > midtow->getPosition().x &&
- // zombie[i]->getPosition().y < midtow->getPosition().y)
- // {
- // if(zombie[i]->getRotation() != 45.0f)
- // {
- // zombie[i]->setRotation(45.0f);
- // }
- // zombie[i]->changePosition(-zombie[i]->getMoveSpeed(), zombie[i]->getMoveSpeed());
- // }
- // else if(zombie[i]->getPosition().x < midtow->getPosition().x &&
- // zombie[i]->getPosition().y < midtow->getPosition().y)
- // {
- // if(zombie[i]->getRotation() != 315.0f)
- // {
- // zombie[i]->setRotation(315.0f);
- // }
- // zombie[i]->changePosition(zombie[i]->getMoveSpeed(), zombie[i]->getMoveSpeed());
- // }
- //
- // }
- // }
- //}
- }
- void Game::input()//check input, left, right, up, down and escape and some more
- {
- if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left) && sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
- {
- if(Player1->getRotation() != 135.0f)
- {
- Player1->setRotation(135.0f);
- }
- Player1->changePosition(-Player1->getMoveSpeed(), -Player1->getMoveSpeed());
- }
- else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up) && sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
- {
- if(Player1->getRotation() != 225.0f)
- {
- Player1->setRotation(225.0f);
- }
- Player1->changePosition(Player1->getMoveSpeed(), -Player1->getMoveSpeed());
- }
- else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right) && sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
- {
- if(Player1->getRotation() != 315.0f)
- {
- Player1->setRotation(315.0f);
- }
- Player1->changePosition(Player1->getMoveSpeed(), Player1->getMoveSpeed());
- }
- else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down) && sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
- {
- if(Player1->getRotation() != 45.0f)
- {
- Player1->setRotation(45.0f);
- }
- Player1->changePosition(-Player1->getMoveSpeed(), Player1->getMoveSpeed());
- }
- else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
- {
- if(Player1->getRotation() != 90.0f)
- {
- Player1->setRotation(90.0f);
- }
- Player1->changePosition(-Player1->getMoveSpeed(), 0.0f);
- }
- else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
- {
- if(Player1->getRotation() != 270.0f)
- {
- Player1->setRotation(270.0f);
- }
- Player1->changePosition(Player1->getMoveSpeed(), 0.0f);
- }
- else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
- {
- if(Player1->getRotation() != 180.0f)
- {
- Player1->setRotation(180.0f);
- }
- Player1->changePosition(0.0f, -Player1->getMoveSpeed());
- }
- else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
- {
- if(Player1->getRotation() != 0.0f)
- {
- Player1->setRotation(0.0f);
- }
- Player1->changePosition(0.0f, Player1->getMoveSpeed());
- }
- else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
- {
- GameState = Game::Exiting;
- }
- else if(sf::Keyboard::isKeyPressed(sf::Keyboard::P))
- {
- GameState = Game::Paused;
- }
- else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Return))
- {
- Init();
- }
- //checking for illegal movement:
- //obs: -1 will not change the position.
- sf::Vector2f f = Player1->getPosition();
- if(f.x > 800)
- {
- Player1->setPosition(800, -1);
- }
- else if(f.x < 0)
- {
- Player1->setPosition(0, -1);
- }
- if(f.y > 600)
- {
- Player1->setPosition(-1, 600);
- }
- else if(f.y < 0)
- {
- Player1->setPosition(-1, 0);
- }
- }
- void Game::Exit()//clean up and close window.
- {
- delete Player1;
- Player1 = NULL;
- int i = 0;
- /*for(std::vector<Zombie*>::iterator it = zombie.begin(); it < zombie.end(); it++)
- {
- delete zombie[i];
- zombie.erase(it);
- }*/
- std::vector<Zombie>::iterator it = zombie.begin();
- for(; i < iNrOfZombies; i++)
- zombie.pop_back();
- for(i = 0; i < iNrOfZombies; i++)
- {
- if(blood[i] != NULL)
- {
- delete blood[i];
- blood[i] = NULL;
- }
- }
- //delete [] zombie;
- delete midtow;
- midtow = NULL;
- mainWindow.close();
- }
- void Game::isPaused()//while paused
- {
- sf::Time t = sf::seconds(0.2f);
- sf::sleep(t);
- sf::Text text("GAME IS PAUSED, PRESS 'P' TO UNPAUSE");
- text.setCharacterSize(30);
- text.setColor(sf::Color::Red);
- text.setFont(sf::Font::getDefaultFont());
- sf::Event ev;
- while(mainWindow.isOpen() && GameState == Game::Paused)
- {
- while(mainWindow.pollEvent(ev))
- {
- switch(ev.type)
- {
- case sf::Event::Closed:
- Exit();
- }
- }
- if(sf::Keyboard::isKeyPressed(sf::Keyboard::P))
- {
- GameState = Game::Running;
- sf::sleep(t);
- }
- mainWindow.draw(text);
- mainWindow.display();
- }
- }
- void Game::gameLost()//game lost, will show some stats.
- {
- sf::Event ev;
- sf::Text lost;
- sf::Text kills;
- lost.setString("Game Over, press [ENTER] to restart or [ESC] to exit");
- lost.setPosition(150, 300);
- lost.setColor(sf::Color::Red);
- kills.setString("Number of kills: ");
- kills.setPosition(350, 350);
- Kills.setPosition(350, 400);
- Kills.setColor(sf::Color::White);
- while(mainWindow.isOpen() && GameState == Game::Lost)
- {
- while(mainWindow.pollEvent(ev))
- {
- switch(ev.type)
- {
- case sf::Event::Closed:
- GameState = Game::Exiting;
- break;
- }
- }
- if(sf::Keyboard::isKeyPressed(sf::Keyboard::Return))
- {
- for(int i = 0; i < iNrOfZombies; i++)
- {
- zombie.pop_back();
- }
- Init();
- }
- mainWindow.clear();
- mainWindow.draw(lost);
- mainWindow.draw(kills);
- mainWindow.draw(Kills);
- mainWindow.display();
- }
- }
- std::string Game::KillsToString()
- {
- std::string s;
- std::stringstream ss;
- ss << iKillCounter;
- s = ss.str();
- return s;
- }
- //static variable declaration:
- Game::gameState Game::GameState;
- sf::RenderWindow Game::mainWindow;
- Player * Game::Player1;
- //Zombie * Game::zombie[120];
- std::vector <Zombie> Game::zombie;
- sf::Texture Game::bloodLoad;
- Castle * Game::midtow;
- int Game::iKillCounter;
- sf::Text Game::Kills;
- int Game::iNrOfZombies;
- int Game::iKillsMoreZombies;
- sf::Texture Game::bgTexture;
- sf::Sprite Game::bg;
- sf::Texture Game::zombieTexture;
- float Game::zombieMultiplier;
- Blood * Game::blood[100];
- /* Game.hpp */
- #include "Player.hpp"
- #include "Zombie.hpp"
- #include "Castle.hpp"
- #include "Blood.hpp"
- #include <vector>
- class Game
- {
- public:
- static void Init();
- private:
- //enumerated thingys
- static enum gameState {UnInit, Running, Paused, Exiting, Lost};
- static gameState GameState;
- //renderwindows
- static sf::RenderWindow mainWindow;
- //textures/sprites
- static sf::Texture bloodLoad;
- static sf::Texture bgTexture;
- static sf::Sprite bg;
- static sf::Texture zombieTexture;
- //different texts
- static sf::Text Kills;
- //classes and pointers to classes
- static Player * Player1;
- //static Zombie * zombie[];
- static Blood * blood[];
- static Castle * midtow;
- static std::vector<Zombie> zombie;
- //values of any sort
- static int iKillCounter;
- static int iNrOfZombies;
- static int iKillsMoreZombies;
- static float zombieMultiplier;
- //methods
- static void moveZombie();
- static void input();
- static void gameLoop();
- static void Exit();
- static void collision();
- static void isPaused();
- static void drawZombies();
- static void gameLost();
- static void drawScreen();
- static std::string KillsToString();
- };
- /* Zombie.cpp */
- #include "Zombie.hpp"
- Zombie::Zombie()
- {
- b_isKilled = false;
- b_firstMove = true;
- b_isBloody = false;
- }
- void Zombie::Init(sf::Texture &z)
- {
- /*if(!zmTexture.loadFromFile("img/zombie.bmp"))
- {
- printf("Zombieskin unable to load");
- zmSprite.setColor(sf::Color::White);
- return;
- }*/
- zmSprite.setTexture(z);
- int x = rand () % 800 + 1, y = rand () % 600 + 1;
- /*if(x >= 400 && x <= 600)
- x += 100;
- else if(y <= 400 && y > 200)
- y -= 100;*/
- if(x >= 350 && x <= 650)
- x += 125;
- else if(y <= 450 && y > 150)
- y -= 125;
- zmSprite.setOrigin((float)8, (float)8); //set center of sprite, easier to rotate ;)
- zmSprite.setPosition((float)x, (float)y); //sets random position.
- /*flMoveSpeed = 1.3;*/
- flMoveY = (float)0, flMoveX = (float)0;
- }
- void Zombie::respawn()
- {
- b_isKilled = false;
- b_firstMove = true;
- int x = rand () % 800 + 1, y = rand () % 600 + 1;//position randomizer
- if(x >= 400 && x <= 600)
- x += 100;
- else if(y <= 400 && y > 200)
- y -= 100;
- zmSprite.setPosition((float)x, (float)y); //sets random position.
- flMoveY = (float)0, flMoveX = (float)0;
- }
- sf::Sprite Zombie::drawSprite()
- {
- return zmSprite;
- }
- void Zombie::setRotation(float r)
- {
- zmSprite.setRotation(r);
- }
- void Zombie::changePosition(float x, float y)
- {
- zmSprite.move(x, y);
- }
- bool Zombie::isDead()
- {
- return b_isKilled;
- }
- int Zombie::getTime()
- {
- zmTime = zmClock.getElapsedTime();
- return zmTime.asMilliseconds();
- }
- float Zombie::getMoveSpeed()
- {
- return flMoveSpeed;
- }
- float Zombie::getRotation()
- {
- return zmSprite.getRotation();
- }
- void Zombie::restartClock()
- {
- zmClock.restart();
- }
- void Zombie::setKilled(bool b)
- {
- b_isKilled = b;
- cDead.restart();
- timeDead = cDead.getElapsedTime();
- }
- sf::FloatRect Zombie::getFR()
- {
- sf::FloatRect fl = zmSprite.getGlobalBounds();
- return fl;
- }
- float Zombie::getTimeDead()
- {
- timeDead = cDead.getElapsedTime();
- return timeDead.asSeconds();
- }
- sf::Vector2f Zombie::getPosition()
- {
- return zmSprite.getPosition();
- }
- void Zombie::moveZombie()
- {
- float wy = 300, wx = 400;
- float zombieY = zmSprite.getPosition().y, zombieX = zmSprite.getPosition().x;
- float dirY = zombieY - wy, dirX = zombieX - wx;
- float rot = (float)(std::atan2f(dirY, dirX) / PI) * 180 - 90;//get radians and convert into degrees, easier to work with
- if(rot < 0)
- rot += 360;
- //decide which direction to go
- if(moveclock.getElapsedTime().asSeconds() > 1.0f || b_firstMove)
- {
- moveclock.restart();
- b_firstMove = false;
- if(rot <= 45 + 22.5 && rot > 45 - 22.5)
- {
- rot = 45 + 180;
- zmSprite.setRotation(rot);
- flMoveX = (float)0.6, flMoveY = (float)-0.6;
- zmSprite.move(flMoveX, flMoveY);
- }
- else if(rot <= 90 + 22.5 && rot > 90 - 22.5)
- {
- rot = 90 + 180;
- zmSprite.setRotation(rot);
- flMoveX = (float)0.6, (float)flMoveY = 0;
- zmSprite.move(flMoveX, 0);
- }
- else if(rot <= 135 + 22.5 && rot > 135 - 22.5)
- {
- rot = 135 + 180;
- zmSprite.setRotation(rot);
- flMoveX = (float)0.6, flMoveY = (float)0.6;
- zmSprite.move(flMoveX, flMoveY);
- }
- else if(rot <= 180 + 22.5 && rot > 180 - 22.5)
- {
- rot = 0;
- zmSprite.setRotation(rot);
- flMoveX = (float)0, flMoveY = (float)0.6;
- zmSprite.move(flMoveX, flMoveY);
- }
- else if(rot <= 225 + 22.5 && rot > 225 - 22.5)
- {
- rot = 45;
- zmSprite.setRotation(rot);
- flMoveX = (float)-0.6, flMoveY = (float)0.6;
- zmSprite.move(flMoveX, flMoveY);
- }
- else if(rot <= 270 + 22.5 && rot > 270 - 22.5)
- {
- rot = 90;
- zmSprite.setRotation(rot);
- flMoveX = (float)-0.6, flMoveY = (float)0;
- zmSprite.move(flMoveX, flMoveY);
- }
- else if(rot <= 315 + 22.5 && rot > 315 - 22.5)
- {
- rot = 135;
- zmSprite.setRotation(rot);
- flMoveX = (float)-0.6, flMoveY = (float)-0.6;
- zmSprite.move(flMoveX, flMoveY);
- }
- else
- {
- rot = 180;
- zmSprite.setRotation(rot);
- flMoveY = (float)-0.6, flMoveX = (float) 0;
- zmSprite.move(flMoveX, flMoveY);
- }
- }
- else
- {
- zmSprite.move(flMoveX, flMoveY);
- }
- }
- void Zombie::becameBloody(bool b)
- {
- b_isBloody = b;
- }
- bool Zombie::isBloody()
- {
- return b_isBloody;
- }
- /* Zombie.hpp */
- #include <SFML2\Graphics.hpp>
- #include <math.h>
- #define PI 3.14159265
- class Zombie
- {
- public:
- Zombie();
- void Init(sf::Texture &);
- void respawn();
- void setRotation(float);
- void changePosition(float, float);
- void setKilled(bool);
- void restartClock();
- void moveZombie();
- void becameBloody(bool);// For future use, got no sprite for a dead zombie yet...
- float getRotation();
- float getMoveSpeed();
- float getTimeDead();
- int getTime();
- bool isDead();
- bool isBloody();
- sf::Sprite drawSprite();
- sf::FloatRect getFR();
- sf::Vector2f getPosition();
- private:
- sf::Sprite zmSprite;
- sf::Clock zmClock;
- sf::Time zmTime;
- sf::Clock moveclock;
- sf::Clock cDead;
- sf::Time timeDead;
- bool b_isKilled;
- bool b_firstMove;
- bool b_isBloody;
- float flMoveSpeed;
- float flMoveY, flMoveX;
- /*int iAttackSpeed;
- int iAttackRange;*/
- };
- /* Castle.cpp */
- #include "Castle.hpp"
- Castle::Castle()
- {
- if(!texture.loadFromFile("img/midtower3.jpg"))
- {
- printf("NO CAN HAZ MIDDLE TOWER");
- return;
- }
- s_Castle.setTexture(texture);
- s_Castle.setOrigin(32, 32);
- s_Castle.setPosition(400, 300);
- iHealth = 20;
- }
- sf::Sprite Castle::drawSprite()
- {
- return s_Castle;
- }
- void Castle::redHealth()
- {
- iHealth--;
- }
- sf::Vector2f Castle::getPosition()
- {
- return s_Castle.getPosition();
- }
- std::string Castle::intToString()
- {
- std::string s;
- std::stringstream ss;
- ss << iHealth;
- s = ss.str();
- return s;
- }
- sf::Text Castle::drawText()
- {
- Health.setString(intToString());
- if(iHealth <= 5)
- Health.setColor(sf::Color::Red);
- else if(iHealth <= 10)
- Health.setColor(sf::Color::Yellow);
- else
- Health.setColor(sf::Color::Green);
- return Health;
- }
- sf::FloatRect Castle::getFR()
- {
- sf::FloatRect f = s_Castle.getGlobalBounds();
- return f;
- }
- int Castle::getHealth()
- {
- return iHealth;
- }
- /* Castle.hpp */
- #include <SFML2\Graphics.hpp>
- #include <sstream>
- class Castle
- {
- public:
- Castle();
- void redHealth();
- sf::FloatRect getFR();
- sf::Sprite drawSprite();
- sf::Text drawText();
- sf::Vector2f getPosition();
- int getHealth();
- private:
- int iHealth;
- std::string intToString();
- sf::Texture texture;
- sf::Text Health;
- sf::Sprite s_Castle;
- };
- /* Blood.cpp */
- #include "Blood.hpp"
- Blood::Blood(sf::Texture &b, sf::Vector2f v)
- {
- spBlood.setTexture(b);
- spBlood.setOrigin(spBlood.getGlobalBounds().width / 2, spBlood.getGlobalBounds().height / 2);
- spBlood.setPosition(v);
- time.restart();
- }
- void Blood::Draw(sf::RenderWindow &w)
- {
- w.draw(spBlood);
- }
- sf::Sprite Blood::getSprite()// temporarily, used for debugging purpose - wasn't the issue I had at that moment == will be removed later when I've got time
- {
- return spBlood;
- }
- float Blood::getTime()
- {
- return time.getElapsedTime().asSeconds();
- }
- /* Blood.hpp */
- #include <SFML2/Graphics.hpp>
- class Blood
- {
- public:
- Blood(sf::Texture &b, sf::Vector2f v);
- ~Blood(){}
- void Draw(sf::RenderWindow &w);
- float getTime();
- sf::Sprite getSprite();
- private:
- sf::Sprite spBlood;
- sf::Clock time;
- };
- /* Player.cpp */
- #include "Player.hpp"
- Player::Player()
- {
- if(!plTexture.loadFromFile("img/human.bmp"))
- {
- printf("error");
- return;
- }
- plSprite.setTexture(plTexture);
- plSprite.setPosition(450, 350);
- plSprite.setOrigin(8, 8);
- plClock.restart();
- plTime = plClock.getElapsedTime();
- iAttackSpeed = 1150;
- flMoveSpeed = 4;
- }
- void Player::setRotation(float i)
- {
- plSprite.setRotation(i);
- /*plSprite.move(16, 0);*/
- }
- float Player::getRotation()
- {
- return plSprite.getRotation();
- }
- void Player::changePosition(float x, float y)
- {
- plSprite.move(x, y);
- }
- float Player::getMoveSpeed()
- {
- return flMoveSpeed;
- }
- int Player::getTime()
- {
- plTime = plClock.getElapsedTime();
- return plTime.asMilliseconds();
- }
- void Player::restartClock()
- {
- plClock.restart();
- }
- sf::Sprite Player::drawSprite()
- {
- return plSprite;
- }
- sf::FloatRect Player::getFR()
- {
- sf::FloatRect fl = plSprite.getGlobalBounds();
- return fl;
- }
- sf::Vector2f Player::getPosition()
- {
- sf::Vector2f f = plSprite.getPosition();
- return f;
- }
- void Player::setPosition(float x, float y)
- {
- if(y < 0)
- y = plSprite.getPosition().y;
- else if(x < 0)
- x = plSprite.getPosition().x;
- plSprite.setPosition(x, y);
- }
- /*
- sf::Texture plTexture;
- sf::Sprite plSprite;
- int iAttackSpeed;
- int iAttackRange;
- int iMove;
- */
- // above was used a reminder, my friends didn't allow me to use VS11 =(
- /* Player.hpp */
- #include <SFML2\Graphics.hpp>
- class Player
- {
- public:
- Player();
- void setRotation(float);
- void changePosition(float, float);
- float getRotation();
- float getMoveSpeed();
- int getTime();
- void restartClock();
- sf::FloatRect getFR();
- sf::Sprite drawSprite();
- sf::Vector2f getPosition();
- void setPosition(float, float);//OBSERVE: ONLY FOR OUT-OF-BOX, use changePosition for movement.
- private:
- sf::Sprite plSprite;
- sf::Texture plTexture;
- sf::Clock plClock;
- sf::Time plTime;
- float flMoveSpeed;
- int iAttackSpeed;
- int iAttackRange;
- };
- /*Main.cpp*/
- #include "Game.hpp"
- int main(void)
- {
- Game::Init();
- return 0;
- }// When running in debug - it gets to this point, then throws me into xmemory at line 64.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement