int main() { sf::RenderWindow mWindow(sf::VideoMode(640, 480), "Rock Scissor Paper"); sf::Time timePerFrame = sf::seconds(1.f/60.f); sf::Time timeSinceLastFrame; sf::Clock frameClock; sf::Clock timerClock; Game game(mWindow); while (mWindow.isOpen()) { sf::Event event; while (mWindow.pollEvent(event)) { switch (event.type) { case sf::Event::Closed: mWindow.close(); break; } } timeSinceLastFrame += frameClock.restart(); while (timeSinceLastFrame >= timePerFrame) { game.update(timePerFrame); timeSinceLastFrame -= timePerFrame; } game.processInput(); mWindow.clear(); game.render(); mWindow.display(); } return 0; }
int main( int argc, char *argv[] ) { Game mGame; Window mWindow( Resolution( 1024, 768 ) ); mGame.Create(); int currentTime = SDL_GetTicks(); while( mGame.isRunning() ) { int newTime = SDL_GetTicks(); int frameTime = newTime - currentTime; currentTime = newTime; SDL_Event event; while ( SDL_PollEvent( &event ) ) { switch( event.type ) { case SDL_KEYDOWN: mGame.KeyPress( &event.key.keysym ); break; case SDL_KEYUP: mGame.KeyRelease( &event.key.keysym ); break; case SDL_MOUSEBUTTONDOWN: mGame.MousePress( event.button.button, event.button.x, event.button.y ); break; case SDL_MOUSEBUTTONUP: mGame.MouseRelease( event.button.button, event.button.x, event.button.y ); break; default: break; } } mGame.Logic( frameTime ); mGame.Render(); } mGame.Destroy(); return 0; }
int main() { srand(time(NULL)); //Game game; //game.run(); //World. //World world; //world.loadLevelMap("level1.txt"); //Loading config file. config config; loadConfigFile("config.txt", &config); //Loading level map. std::string levelMapName = "level1.txt"; char** levelMap = loadLevelMap(levelMapName); //Creating a window. sf::RenderWindow mWindow(sf::VideoMode(config.screenWidth, config.screenHeight), "Badass Tales of BADASSLAND!!!!111"); //sf::View mView; //Clocks. sf::Clock gameClock; sf::Clock invincibilityClock; sf::Clock spawnClock; // //GRAPHICS. // // // sf::RectangleShape rectangle(sf::Vector2f(config.tileSize, config.tileSize)); //For tiles (temporary). //Creating a font. sf::Font font; font.loadFromFile("sansation.ttf"); //HUD Health. sf::Text textHealth("", font, 30); textHealth.setStyle(sf::Text::Bold); textHealth.setColor(sf::Color::Red); textHealth.setPosition(10, 10); //HUD Mana. sf::Text textMana("", font, 30); textMana.setStyle(sf::Text::Bold); textMana.setColor(sf::Color::Blue); textMana.setPosition(10, 45); //Enemy sound. sf::SoundBuffer emenyHitSoundBuffer; emenyHitSoundBuffer.loadFromFile("sound1.ogg"); //emenyHitSoundBuffer.loadFromFile("Sounds/NPC/ogre/ogre2.wav"); sf::Sound emenyHitSound(emenyHitSoundBuffer); //Loading and setting level tileset. sf::Texture tileSet; if(!tileSet.loadFromFile("testTileSet.png")) return EXIT_FAILURE; sf::Sprite tile(tileSet); //HP bar. sf::Texture hpBar; if(!hpBar.loadFromFile("HPBar.png")) return EXIT_FAILURE; // //UNITS // // //Creating player. sf::Texture playerTexture; if(!playerTexture.loadFromFile("playerSpriteList.png")) return EXIT_FAILURE; Player player(playerTexture, hpBar, config.playerStartingX, config.playerStartingY, font); //Enemy texture. sf::Texture enemyTexture; if(!enemyTexture.loadFromFile("enemySpriteList.png")) return EXIT_FAILURE; //Creating test health potion. sf::Texture healthPotionTexture; if(!healthPotionTexture.loadFromFile("healthPotion.png")) return EXIT_FAILURE; DropItem healthPotion(healthPotionTexture, "healthItem", 40, 600, 150); //Object arrays. std::vector<Enemy> enemies; enemies.push_back(*(new Enemy(enemyTexture, 400, 360, font))); std::vector<DropItem> drops; drops.push_back(*(new DropItem(healthPotionTexture, "healthItem", 40, 600, 150))); //Game cycle. while(mWindow.isOpen()) { float time = gameClock.getElapsedTime().asMicroseconds(); gameClock.restart(); time /= config.gameSpeed; sf::Event event; while(mWindow.pollEvent(event)) { if(event.type == sf::Event::Closed) mWindow.close(); } //Updating all objects. player.update(time, levelMap, &config); //healthPotion.update(time); for(int i = 0; i < enemies.size(); ++i) enemies[i].update(time, levelMap, &config); for(int i = 0; i < drops.size(); ++i) drops[i].update(time); //Resolving collisions. Should move to World class methods. for(int i = 0; i < enemies.size(); ++i) if((player.getRect().intersects(enemies[i].getRect())) && (invincibilityClock.getElapsedTime().asSeconds() > config.invincibilityTime)) { enemies[i].dealDamage(player); invincibilityClock.restart(); } for(int i = 0; i < drops.size(); ++i) if((player.getRect().intersects(drops[i].getRect())) && (~drops[i].isMarkedForRemoval())) drops[i].action(player); //if(sf::Keyboard::isKeyPressed(sf::Keyboard::H)) player.mHP += 5; //Spawning elves. if((sf::Keyboard::isKeyPressed(sf::Keyboard::G)) && (spawnClock.getElapsedTime().asSeconds() > 0.5)) { enemies.push_back(*(new Enemy(enemyTexture, 400, 360, font))); spawnClock.restart(); } //Spawning health potions. if((sf::Keyboard::isKeyPressed(sf::Keyboard::H)) && (spawnClock.getElapsedTime().asSeconds() > 0.5)) { drops.push_back(*(new DropItem(healthPotionTexture, "healthItem", 40, rand() % 400 + 120, rand() % 600 + 120))); spawnClock.restart(); } //HUD display. std::ostringstream hudHealth; std::ostringstream hudMana; player.showStats(&hudHealth, &hudMana); textMana.setString(hudMana.str()); textHealth.setString(hudHealth.str()); //Clearing the screen. mWindow.clear(sf::Color::White); //Rendering level map tiles. for(int i = 0; i < mapHeight; ++i) { for(int j = 0; j < mapWidth; ++j) { switch(levelMap[i][j]) { case 'B': rectangle.setFillColor(sf::Color::Black); break; case '0': rectangle.setFillColor(sf::Color::Green); break; default: continue; } /* switch(levelMap[i][j]) { case 'A': tile.setTextureRect(sf::IntRect(tileSize * 0, tileSize * 0, tileSize * 2, tileSize * 3)); break;//OK.? case 'B': tile.setTextureRect(sf::IntRect(tileSize * 2, tileSize * 0, tileSize * 1, tileSize * 3)); break;//OK.? case 'C': tile.setTextureRect(sf::IntRect(tileSize * 3, tileSize * 0, tileSize * 1, tileSize * 3)); break;//OK.? case 'D': tile.setTextureRect(sf::IntRect(tileSize * 4, tileSize * 0, tileSize * 2, tileSize * 3)); break;//OK.? case 'E': tile.setTextureRect(sf::IntRect(tileSize * 0, tileSize * 3, tileSize * 1, tileSize * 1)); break;//OK. case 'F': tile.setTextureRect(sf::IntRect(tileSize * 5, tileSize * 3, tileSize * 1, tileSize * 1)); break;//OK. case 'G': tile.setTextureRect(sf::IntRect(tileSize * 0, tileSize * 4, tileSize * 1, tileSize * 1)); break;//OK. case 'H': tile.setTextureRect(sf::IntRect(tileSize * 5, tileSize * 4, tileSize * 1, tileSize * 1)); break;//OK. case 'I': tile.setTextureRect(sf::IntRect(tileSize * 0, tileSize * 5, tileSize * 2, tileSize * 2)); break; case 'J': tile.setTextureRect(sf::IntRect(tileSize * 2, tileSize * 6, tileSize * 1, tileSize * 1)); break; case 'K': tile.setTextureRect(sf::IntRect(tileSize * 3, tileSize * 6, tileSize * 1, tileSize * 1)); break; case 'L': tile.setTextureRect(sf::IntRect(tileSize * 4, tileSize * 5, tileSize * 2, tileSize * 2)); break; case 'M': tile.setTextureRect(sf::IntRect(tileSize * 1, tileSize * 03, tileSize * 1, tileSize * 1)); break;//OK. //case 'N': tile.setTextureRect(sf::IntRect(360, 201, tileSize, tileSize)); break; default: continue; } */ rectangle.setPosition(config.tileSize * j - offsetX, config.tileSize * i - offsetY); mWindow.draw(rectangle); //tile.setPosition(tileSize * j - offsetX, tileSize * i - offsetY); //mWindow.draw(tile); } } //Rendering all the objects. //mWindow.draw(enemy.mSprite); //mWindow.draw(enemy.mTextName); for(int i = 0; i < enemies.size(); ++i) { mWindow.draw(enemies[i].getSprite()); mWindow.draw(enemies[i].getTextName()); } for(int i = 0; i < drops.size(); ++i) mWindow.draw(drops[i].getSprite()); mWindow.draw(player.mSprite); mWindow.draw(player.mHpSprite); mWindow.draw(player.mTextName); mWindow.draw(textHealth); mWindow.draw(textMana); mWindow.display(); for(int i = 0; i < drops.size(); ++i) if(drops[i].isMarkedForRemoval()) { drops.erase(drops.begin() + i ); --i; } } //Clearing memory. for(int i = 0; i < mapHeight; ++i) delete[] levelMap[i]; //!!!Memory handled[1]+. delete[] levelMap; //!!!Memory handled[1]+. return 0; }