Example #1
0
int main(int argc, char **argv)
{
	sf::RenderWindow window(sf::VideoMode(600, 800), "The Floor Is Lava!");
	//window.setVerticalSyncEnabled(true);
	window.setFramerateLimit(60);

	Camera camera(608, 800, 1);
	camera.MoveTowards(0.0f, -1.0f);

	std::unique_ptr<sf::Texture> lava(new sf::Texture);
	std::unique_ptr<sf::Texture> solid(new sf::Texture);
	std::unique_ptr<sf::Texture> player(new sf::Texture);
	
	sf::Font font;
	sf::Text score;
	if(!font.loadFromFile("Assets/Roboto-Regular.ttf"))
	{
		std::cerr << "Unable to load font!" << std::endl;
	}

	score.setString("0");
	score.setFont(font);
	score.setCharacterSize(50);

	sf::View gui_view;
	gui_view.setSize(608, 800);
	gui_view.setCenter(300, 400);

	lava->loadFromFile("Assets/lava.png");
	solid->loadFromFile("Assets/solid.png");
	player->loadFromFile("Assets/player.png");

	Tile lava_sprite(lava, Tile::LAVA);
	Tile solid_sprite(solid, Tile::SOLID);
	Player player_sprite(player, camera);
	//sf::Sprite lava_sprite;
	//sf::Sprite solid_sprite;
	//lava_sprite.setTexture(lava);
	//solid_sprite.setTexture(solid);
	//solid_sprite.move(sf::Vector2f(32, 0));

	

	while (window.isOpen())
	{
		sf::Event event;
		while (window.pollEvent(event))
		{
			if (event.type == sf::Event::Closed)
			{
				window.close();
			}

			if(event.type == sf::Event::KeyPressed)
			{
				if (player_sprite.IsAlive()){
					switch (event.key.code)
					{
					case sf::Keyboard::Left:
						player_sprite.Move(-32.0f, 0.0f);
						break;
					case sf::Keyboard::Right:
						player_sprite.Move(32.0f, 0.0f);
						break;
					case sf::Keyboard::Up:
						player_sprite.Move(0.0f, -32.0f);
						break;
					case sf::Keyboard::Down:
						player_sprite.Move(0.0f, 32.0f);
					}
				}
			}

		}
		window.clear(sf::Color::Black);
		window.setView(camera.GetView());
		if (player_sprite.IsAlive())
		{
			camera.Update();
			player_sprite.Update();
			score.setString(std::to_string(player_sprite.GetScore()));
		}
		window.draw(lava_sprite.GetSprite());
		window.draw(solid_sprite.GetSprite());
		window.draw(player_sprite.GetPlayer());
		window.setView(gui_view);
		window.draw(score);
		window.display();
	}
	return 0;
}
Example #2
0
int main()
{


    sf::RenderWindow window(sf::VideoMode(480,800), "SFML works!");

    sf::Texture sky_texture;
    if (!sky_texture.loadFromFile("background.png",sf::IntRect(0,0,480,800)))
        return EXIT_FAILURE;
    sf::Sprite sky(sky_texture);

    sf::Texture player_texture;
    if (!player_texture.loadFromFile("shoot.png",sf::IntRect(0,100,103,133)))
        return EXIT_FAILURE;
    sf::Sprite player_sprite(player_texture);
    player_sprite.setPosition(sf::Vector2f(200, 600));
    x=200;
    y=600;

    sf::Texture forpowerup;
    if (!forpowerup.loadFromFile("shoot.png",sf::IntRect(266,398,62,88)))
        return EXIT_FAILURE;
    sf::Sprite powerup(forpowerup);

    sf::Texture enemy_texture;
    if (!enemy_texture.loadFromFile("shoot.png",sf::IntRect(0,0,68,100)))
        return EXIT_FAILURE;
    sf::Sprite enemy_sprite(enemy_texture);

    sf::Texture destroy1;
    if (!destroy1.loadFromFile("shoot.png",sf::IntRect(532,650,68,100)))
        return EXIT_FAILURE;
    sf::Sprite spdestroy1(destroy1);

    sf::Texture destroy2;
    if (!destroy2.loadFromFile("shoot.png",sf::IntRect(605,650,68,100)))
        return EXIT_FAILURE;
    sf::Sprite spdestroy2(destroy2);

    sf::Texture destroy3;
    if (!destroy3.loadFromFile("shoot.png",sf::IntRect(670,650,68,100)))
        return EXIT_FAILURE;
    sf::Sprite spdestroy3(destroy3);

    sf::Texture destroy4;
    if (!destroy4.loadFromFile("shoot.png",sf::IntRect(740,650,68,100)))
        return EXIT_FAILURE;
    sf::Sprite spdestroy4(destroy4);

    sf::Texture you1;
    if (!you1.loadFromFile("shoot.png",sf::IntRect(166,236,103,120)))
        return EXIT_FAILURE;
    sf::Sprite dyou1(you1);

    sf::Texture you2;
    if (!you2.loadFromFile("shoot.png",sf::IntRect(330,626,103,120)))
        return EXIT_FAILURE;
    sf::Sprite dyou2(you2);

    sf::Texture you3;
    if (!you3.loadFromFile("shoot.png",sf::IntRect(330,500,103,120)))
        return EXIT_FAILURE;
    sf::Sprite dyou3(you3);


    sf::SoundBuffer bgm;
    if (!bgm.loadFromFile("game_music.ogg"))
        return -1;
    sf::Sound bgm1;
    bgm1.setBuffer(bgm);
    bgm1.play();

    sf::SoundBuffer enemydown;
    if (!enemydown.loadFromFile("enemy1_down.ogg"))
        return -1;
    sf::Sound enemydown1;
    enemydown1.setBuffer(enemydown);

    sf::SoundBuffer _player_down;
    if (!_player_down.loadFromFile("youdown.ogg"))
        return -1;
    sf::Sound player_down;
    player_down.setBuffer(_player_down);

    sf::Texture player_bullet_texture;
    if (!player_bullet_texture.loadFromFile("shoot.png",sf::IntRect(69,78,10,22)))
        return -1;
    sf::Sprite player_bullet_sprite(player_bullet_texture);

    sf::Texture enemy_bullet_texture;
    if (!enemy_bullet_texture.loadFromFile("shoot.png",sf::IntRect(1002,990,10,22)))
        return -1;
    sf::Sprite enemy_bullet_sprite(enemy_bullet_texture);

    //¼ÓÔØ×ÖÌåÎļþ
    sf::Font font;
    if (!font.loadFromFile("score.ttf"))
    return -1;

    sf::Text showscore;
    showscore.setFont(font);
    showscore.setString(scorestr);
    showscore.setCharacterSize(40);
    showscore.setColor(sf::Color::White);

    sf::Text text;
    text.setFont(font);
    text.setString("Score");
    text.setCharacterSize(40);
    text.setColor(sf::Color::White);

    sf::Text die;
    die.setFont(font);
    die.setCharacterSize(22);
    die.setString("You life:2/3,press Tab to continue");
    die.setColor(sf::Color::White);

    sf::Text gg;
    gg.setFont(font);
    gg.setCharacterSize(40);
    gg.setString("GAME  OVER");
    gg.setColor(sf::Color::Red);





    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.draw(sky);
        if (youlive>0)
        {
        if (destroyyou==0)
        {
            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)&&x<380)
            {
                player_sprite.move(.5,0);
                x+=0.5;
            }
            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)&&x>0)
            {
                player_sprite.move(-.5,0);
                x-=0.5;
            }
            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up)&&y>0)
            {
                player_sprite.move(0,-.5);
                y-=0.5;
            }
            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down)&&y<660)
            {
                player_sprite.move(0,.5);
                y+=0.5;
            }
            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space))
            {
                bullet_f_control();

            }

                window.draw(player_sprite);
        }
        for (i=1;i<=100;i++)
                {
                    if (bullet_is[i]==1)
                    {
                            bullet_y[i]-=0.7;
                            bullet_x[i]+=bullet_limit[i]*0.3;
                            if (bullet_y[i]<0) bullet_is[i]=0;
                            else
                                {
                                    player_bullet_sprite.setPosition(bullet_x[i],bullet_y[i]);
                                    window.draw(player_bullet_sprite);
                                }
                    }
                }

        feplaneshot++;
        if (feplaneshot==enemy_occur_often(score))
        {
            if (enemy_bullet_is[o]==0)
                                {
                                    for (i=1;i<=100;i++)
                                    {
                                        if (enemy_exist[i]==1)
                                        {
                                            k++;
                                            if (k==3)
                                            {
                                            enemy_bullet_is[o]=1;
                                            enemy_bullet_x[o]=enemy_x[i]+32;
                                            enemy_bullet_y[o]=enemy_y[i]+100;
                                            enemy_bullet_length[o]=0;
                                            o++;
                                            k=1;
                                            }
                                        }
                                    }

                                }
            if (o>=500) o=1;
            feplaneshot=1;
        }
        for (i=1;i<=500;i++)
                {
                    if (enemy_bullet_is[i]==1)
                    {
                            enemy_bullet_y[i]+=0.4;
                            enemy_bullet_x[i]+=enemy_bullet_length[i]*0.5;
                            if (enemy_bullet_y[i]>800)
                                enemy_bullet_is[i]=0;
                            else
                                {
                                    enemy_bullet_sprite.setPosition(enemy_bullet_x[i],enemy_bullet_y[i]);
                                    window.draw(enemy_bullet_sprite);

                                }
                    }
                }

        tforplane++;
        if (tforplane==enemy_occur_often(score))
         {
            enemy_number++;
            if (enemy_exist[enemy_number]==0)
             {
                enemy_exist[enemy_number]=1;
                enemy_y[enemy_number]=0;
                enemy_x[enemy_number]=rand()%380;
                enemy_life[enemy_number]=1+score/100;
             }
            if (enemy_number==50) enemy_number=1;
                tforplane=1;
         }
        for (j=1;j<=50;j++)
        {
            if (enemy_exist[j]==1)
            {
               enemy_y[j]+=0.2;
               if (enemy_y[j]>800)
               enemy_exist[j]=0;
               else
               {
                  enemy_sprite.setPosition(enemy_x[j],enemy_y[j]);
                  window.draw(enemy_sprite);
               }
            }
        }
        for (i=1;i<=50;i++)
            for (j=1;j<=100;j++)
            {
                if (enemy_exist[i]==1&&bullet_is[j]==1&&enemy_y[i]<bullet_y[j]&&bullet_y[j]<enemy_y[i]+100&&enemy_x[i]<bullet_x[j]&&bullet_x[j]<enemy_x[i]+68)
                {
                    enemy_life[i]--;
                    bullet_is[j]=0;
                    if (enemy_life[i]==0)
                        {
                             enemy_exist[i]=0;
                             score+=10;
                             sprintf(scorestr,"%d",score+score2);
                             showscore.setString(scorestr);

                             if (destroy==0)
                             {
                             destroyx=enemy_x[i];
                             destroyy=enemy_y[i];
                             destroy=1;
                             }
                             else
                             {
                                 destroyxadd=enemy_x[i];
                                 destroyyadd=enemy_y[i];
                                 destroyadd=1;
                             }
                        }
                }
            }
        for (i=1;i<=50;i++)
        {
            if (enemy_exist[i]==1&&enemy_x[i]+18>x&&x+53>enemy_x[i]&&enemy_y[i]+70>y&&y+103>enemy_y[i]&&destroyyou==0)
            {
                youlive--;
                enemy_exist[i]=0;
                if (destroy==0)
                {
                    destroyx=enemy_x[i];
                    destroyy=enemy_y[i];
                    destroy=1;
                }
                else
                {
                    destroyxadd=enemy_x[i];
                    destroyyadd=enemy_y[i];
                    destroyadd=1;
                }
                destroyyou=1;
                destroyyoux=x;
                destroyyouy=y;

            }
        }
         for (i=1;i<=500;i++)
        {
            if (enemy_bullet_is[i]==1&&enemy_bullet_x[i]>x+31&&enemy_bullet_x[i]<x+71&&enemy_bullet_y[i]>y+37&&enemy_bullet_y[i]<y+97&&destroyyou==0)
            {
                youlive--;
                enemy_bullet_is[i]=0;
                destroyyou=1;
                destroyyoux=x;
                destroyyouy=y;

            }
        }
        if (destroyyou==1)
        {
            g++;
            if (g<=200)
                {
                    dyou1.setPosition(destroyyoux,destroyyouy);
                    window.draw(dyou1);
                    player_down.play();
                }
            if (g>200&&g<=400)
                {
                    dyou2.setPosition(destroyyoux,destroyyouy);
                    window.draw(dyou2);
                }
            if (g>400&&g<600)
                {
                    dyou3.setPosition(destroyyoux,destroyyouy);
                    window.draw(dyou3);
                }
            if (g>600)
            {
            die.setPosition(15,380);
            window.draw(die);
            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Tab))
            {
            player_sprite.setPosition(sf::Vector2f(200, 600));x=200;y=600;
            fuckpower=1;
            destroyyou=0;
            g=1;
            }
            }
        }
        if (destroy==1)
        {
        d++;
        if (d<=200)
            {
                spdestroy1.setPosition(destroyx,destroyy);
                window.draw(spdestroy1);
                enemydown1.play();
            }
        if (d>200&&d<=400)
            {
                spdestroy2.setPosition(destroyx,destroyy);window.draw(spdestroy2);}
        if (d>400&&d<600) {spdestroy3.setPosition(destroyx,destroyy);window.draw(spdestroy3);}
        if (d>=600&&d<800) {spdestroy4.setPosition(destroyx,destroyy);window.draw(spdestroy4);}
        if (d==800) {d=1;destroy=0;}
        }
         if (destroyadd==1)
        {
           d2++;
           if (d2<=200)
            {
                spdestroy1.setPosition(destroyxadd,destroyyadd);
                window.draw(spdestroy1);
                enemydown1.play();
            }
           if (d2>200&&d2<=400)
           {
                spdestroy2.setPosition(destroyxadd,destroyyadd);
                window.draw(spdestroy2);
           }
           if (d2>400&&d2<600)
           {
               spdestroy3.setPosition(destroyxadd,destroyyadd);
               window.draw(spdestroy3);
           }
           if (d2>=600&&d2<800)
            {
                spdestroy4.setPosition(destroyxadd,destroyyadd);
                window.draw(spdestroy4);
           }
        if (d2==800)
            {
                d2=1;
                destroyadd=0;
            }
       }
         text.setPosition(20,20);
         showscore.setPosition(50,60);
         window.draw(text);
         window.draw(showscore);
      }
        else
            {
                gg.setPosition(145,320);
                window.draw(gg);
            }
    window.display();
    }
    return 0;
}