tahamajs's picture
download
raw
7.92 kB
#include "../HederFiles/Game.hpp"
//need to add Enemys
Game::Game()
{
initVariables();
initWindow();
initPlayer();
initScore();
initGamePause();
initMap();
initStar();
initMenu();
initMusicPlayer();
initChileTurtle();
initEnemys();
initHearts();
player1->initMap(map);
sf::View view(sf::FloatRect(VIEW_HIGHT/2-500,VIEW_WIDTH/2, VIEW_HIGHT, VIEW_WIDTH));
window->setView(view);
}
void Game::decreaseJune()
{
June--;
Hearts.pop_back();
player1->reset();
if(June == 0)
{
gameState = GameState::GAME_OVER;
}
}
void Game::initMenu()
{
this->menu = new Menu(*this->window,view.getCenter());
this->levelScreen = new LevelScreen(*this->window,view.getCenter());
}
Game::~Game()
{
delete this->window;
}
void Game::initMusicPlayer()
{
musicPlayer = new MusicPlayer("Audio/RunTimePlayingSound.wav");
musicPlayer->setLoop(true);
}
void Game::initChileTurtle()
{
ifstream file;
file.open("Maps/turtleChule.map");
if (file.is_open())
{
int x, y;
while (file >> x >> y)
{
TurtleChile *turtleChile = new TurtleChile(x, y , &gameState);
turtleChiles.push_back(turtleChile);
cout << "turtleChile" << endl;
}
}
for(int i = 0 ; i < turtleChiles.size() ; i++)
{
turtleChiles[i]->initMap(map);
turtleChiles[i]->initPlayer(player1);
}
}
void Game::ColisionWithEnemy()
{
for(int i = 0 ; i < enemys.size() ; i++)
{
if (enemys[i]->isCollisionWithPlayerNONTOP())
{
enemys.erase(enemys.begin()+i);
score->increaseScore(2);
}
else if (enemys[i]->isCollisionWithPlayerTop())
{
decreaseJune();
}
}
}
void Game::initScore()
{
this->score = new Score();
}
void Game::initMap()
{
this->map = new Map(226);
}
void Game::initStar()
{
this->star = new Star();
}
void Game::initEnemys()
{
ifstream file;
file.open("Maps/enemy.map");
if (file.is_open())
{
int x, y;
int type ;
while (file >> type >> x >> y)
{
Enemy *enemi = new Enemy(x, y , &gameState);
enemys.push_back(enemi);
}
}
for(int i = 0 ; i < enemys.size() ; i++)
{
enemys[i]->initMap(map);
enemys[i]->initPlayer(player1);
}
}
void Game::update()
{
ColisionWithEnemy();
if (!musicPlayer->isPlaying())
{
musicPlayer->play();
}
pollEvents();
map->update();
scoreUpdate();
if(player1->checkCollisionWithMap()){
decreaseJune();
}
if (view.getCenter().y > DEAD_LIMIT)
{
decreaseJune();
}
for(int i = 0 ; i < turtleChiles.size() ; i++)
{
if (turtleChiles[i]->isCollitionOnGate())
{
turtleChiles.erase(turtleChiles.begin()+i);
}
}
}
void Game::initWindow()
{
videoMode.height = WINDOW_HEIGHT;
videoMode.width = WINDOW_WIDTH;
this->window = new RenderWindow(videoMode, "Taha Game", Style::Titlebar | Style::Close);
window->setFramerateLimit(60);
}
void Game::initVariables()
{
this->window = nullptr;
}
void Game::render()
{
this->window->clear(Color(135,206,235));
this->Draw();
view = window->getView();
view.setCenter(player1->getposition());
window->setView(view);
this->window->display();
}
bool Game::running()
{
return this->window->isOpen() && !score->isMaxScore();
}
void Game::scoreUpdate()
{
star->checkCollisionWithPlayer(player1->getSprite().getGlobalBounds(),*this->score);
}
void Game::Draw()
{
map->draw(*window);
this->player1->Draw(*this->window);
score->Draw(*this->window,view.getCenter());
player1->showHelthBar(*this->window,view.getCenter());
star->Draw(*this->window);
window->draw(this->BackgroundSprite);
for (auto &enemi : enemys)
{
enemi->Draw(*window);
}
for (auto &turtleChile : turtleChiles)
{
turtleChile->Draw(*window);
}
showHearts();
}
void Game::initPlayer()
{
this->player1 = new player(350, 100 , &gameState);
}
void Game::pollEvents()
{
while (this->window->pollEvent(ev))
{
switch (ev.type)
{
case Event::Closed:
this->window->close();
break;
case Event::KeyPressed:
if (ev.key.code == Keyboard::Escape)
{
gameState = GameState::PAUSED;
}
else if (ev.key.code == Keyboard::J)
{
gameState = GameState::MENU;
musicPlayer->pause();
}
player1->move(&ev);
view = window->getView();
view.setCenter(player1->getposition());
window->setView(view);
break;
}
}
}
void Game::PlayGame()
{
if(gameState == GameState::PLAYING){
this->update();
this->render();
return;
}
else if(gameState == GameState::PAUSED){
PauseGame();
}
else if(gameState == GameState::MENU){
menu->update(gameState, view.getCenter());
menu->render();
}
else if (gameState == GameState::GAME_OVER)
{
Text text;
Font *font = new Font();
font->loadFromFile("fonts/MenuFont.otf");
text.setFont(*font);
text.setString("Game Over");
text.setCharacterSize(100);
text.setFillColor(Color::Red);
text.setPosition(view.getCenter().x-200,view.getCenter().y-100);
this->window->draw(text);
this->window->draw(this->BackgroundSprite);
this->window->display();
sleep(seconds(3));
resetGame();
}
else if (gameState == GameState::RESTART)
{
resetGame();
gameState = GameState::PLAYING;
}
else if (gameState == GameState::WIN)
{
if(turtleChiles.size()==0){
cout << "You Win" << endl;
Text text;
Font *font = new Font();
font->loadFromFile("fonts/MenuFont.otf");
text.setFont(*font);
text.setString("You Win");
text.setCharacterSize(100);
text.setFillColor(Color::Red);
text.setPosition(view.getCenter().x-200,view.getCenter().y-100);
this->window->draw(text);
this->window->draw(this->BackgroundSprite);
this->window->display();
sleep(seconds(3));
this->window->close();
}else{
gameState = GameState::PLAYING;
}
}
else if(gameState == GameState::LEVELS)
{
levelScreen->update(gameState, view.getCenter());
levelScreen->render();
}
}
void Game::initGamePause()
{
this->gamePause = new GamePause(*this->window);
}
void Game::PauseGame()
{
this->gamePause->update(gameState, view.getCenter());
this->gamePause->render();
}
void Game::resetGame()
{
this->player1->reset();
this->score->reset();
this->star->reset();
this->gameState = GameState::PLAYING;
this->musicPlayer->play();
this->June = 5;
enemys.clear();
initEnemys();
}
void Game::showHearts()
{
for(int i = 0 ; i < June ; i++)
{
Hearts[i]->setPosition(view.getCenter().x - 400 + i*50,view.getCenter().y - 260);
window->draw(*Hearts[i]);
}
}
void Game::initHearts()
{
for(int i = 0 ; i < June ; i++)
{
Texture *HeartTexture = new Texture();
HeartTexture->loadFromFile("sprite/heart.png");
Sprite *HeartSprite = new Sprite();
HeartSprite->setTexture(*HeartTexture);
HeartSprite->setScale(0.1, 0.1);
HeartSprite->setPosition(view.getCenter().x - 400 + i*50,view.getCenter().y - 150);
Hearts.push_back(HeartSprite);
}
}

Xet Storage Details

Size:
7.92 kB
·
Xet hash:
7f4ea19b7365aea40ac366d7cecc754fd8fe49a2b04917017dc25afb43e13c48

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.