int main() { int shotsFired = 0; fstream out; out.open("shotsFired.txt"); fstream in; string filename = "GameName.txt"; in.open(filename.c_str()); string windowName; if(!in.fail()){ windowName = accessStream(in, true); } World world; Player * player = new Player(); PlayerProjectile projectile; PlayerProjectile chargePro(1); Enemy * enemy = new Enemy(); sf::Music music; if(!music.openFromFile("assets/sound/level0.wav")){ cout << "Failed to open music file" << endl; } music.setVolume(25); music.play(); //Floor* street = new Floor("street"); sf::Sprite background; sf::Texture bgScene; bgScene.loadFromFile("assets/art/background.png"); bgScene.setSmooth(false); background.setTexture(bgScene); background.scale(bgScaleFactor, bgScaleFactor); sf::RenderWindow window(sf::VideoMode(screenWidth, screenHeight), windowName); //window.setVerticalSyncEnabled(true); window.setFramerateLimit(60); sf::Sprite EnemyObject; EnemyObject.scale(scaleFactor, scaleFactor); sf::Sprite PlayerObject; PlayerObject.scale(scaleFactor, scaleFactor); EnemyObject.setTexture(enemy->Update()); sf::Vector2f pStart(400, 50); sf::Vector2f eStart(200, 230); EnemyObject.move(eStart); PlayerObject.setTexture(player->Update()); PlayerObject.move(pStart); vector<sf::Sprite> ObjsInView; vector<PlayerProjectile> ProjsInView; vector<Enemy*> EnemiesInView; //vector<Floor*> TilesInView; ObjsInView.push_back(PlayerObject); for(unsigned i = 0; i < world.TileMap.size(); i++){ for(unsigned j = 0; j < world.TileMap[i].length(); ++j){ if(world.TileMap[i][j] == 'S') { Floor* f = new Floor("street", j, i); world.TilesInView.push_back(f); } } } sf::RectangleShape floorCollider(sf::Vector2f(800.f, 45.f)); floorCollider.setPosition(0.f, 370.f); floorCollider.setFillColor(sf::Color::Transparent); floorCollider.setOutlineColor(sf::Color::Red); // Start the game loop while (window.isOpen()) { window.clear(); // Process events sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) { window.close(); } } if(sf::Keyboard::isKeyPressed(sf::Keyboard::X)){ if(player->Shoot()){ PlayerProjectile lemon = projectile; if(player->getPlayerState() == Player::idleRight || player->getPlayerState() == Player::jumpRight || player->getPlayerState() == Player::runRight || player->getPlayerState() == Player::fallRight) { lemon.setVelocity(7); lemon.setSprite(PlayerProjectile::right); } else { //lemonSprite.setTexture(projectile.lemonLeft); lemon.setVelocity(-7); lemon.setSprite(PlayerProjectile::left); } lemon.setPosition(PlayerObject.getPosition()); ProjsInView.push_back(lemon); } } if(sf::Keyboard::isKeyPressed(sf::Keyboard::C)){ if(player->Shoot()){ PlayerProjectile lemon = chargePro; if(player->getPlayerState() == Player::idleRight || player->getPlayerState() == Player::jumpRight || player->getPlayerState() == Player::runRight || player->getPlayerState() == Player::fallRight) { lemon.setVelocity(7); lemon.setSprite(PlayerProjectile::right); } else { //lemonSprite.setTexture(projectile.lemonLeft); lemon.setVelocity(-7); lemon.setSprite(PlayerProjectile::left); } lemon.setPosition(PlayerObject.getPosition()); ProjsInView.push_back(lemon); } } if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) { player->setDirection(Player::left); } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) { player->setDirection(Player::right); } if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left) && sf::Keyboard::isKeyPressed(sf::Keyboard::X)) { player->setDirection(Player::left); player->Shoot(); shotsFired++; } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right) && sf::Keyboard::isKeyPressed(sf::Keyboard::X)) { player->setDirection(Player::right); player->Shoot(); shotsFired++; } if(player->boundingBox.getGlobalBounds().intersects(floorCollider.getGlobalBounds())){ if (sf::Keyboard::isKeyPressed(sf::Keyboard::Z)) { player->Jump(); } if (sf::Keyboard::isKeyPressed(sf::Keyboard::Z) && sf::Keyboard::isKeyPressed(sf::Keyboard::X)){ player->Jump(); player->Shoot(); shotsFired++; } } if (!sf::Keyboard::isKeyPressed(sf::Keyboard::Right) && !sf::Keyboard::isKeyPressed(sf::Keyboard::Left)){ player->setDirection(Player::none); } PlayerObject.move(player->getVelocity(), player->getGravity(floorCollider)); enemy->positionBounds(EnemyObject); if(!enemy->checkCollision(player->boundingBox)){ EnemyObject.move(enemy->Move(EnemyObject), 0); } player->positionBounds(PlayerObject); window.draw(background); window.draw(floorCollider); for(unsigned i = 0; i < world.TilesInView.size(); ++i){ RenderTiles(world.TilesInView[i]->getTiles(), world.TilesInView[i], window); } sf::Texture playerTex = player->Update(); sf::Texture enemyTex = enemy->Update(); //playerTex.setSmooth(false); PlayerObject.setTexture(playerTex, true); EnemyObject.setTexture(enemyTex, true); RenderProjectiles(ProjsInView, window, projectile, player); window.draw(EnemyObject); window.draw(player->boundingBox); window.draw(PlayerObject); // Update the window window.display(); } if(!out.fail()){ accessStream(out, false, shotsFired); //out << shotsFired; //out << std::flush; } return 0; }