コード例 #1
0
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;
}
コード例 #2
0
ファイル: main.cpp プロジェクト: Omegaice/Pong
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;
}
コード例 #3
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;

}