#include<SFML/Graphics.hpp>
#include<cmath>
#include<string>conststd::stringletters="É hora de aprender Programação e Desenvolvimento. Um pouco de muito sobre C++, Programação, Desenvolvimento de Games e Web.";structLetter{sf::Texttext;floatlifetime;};structPosition{floatx,y;};floatdistance(constPosition&p1,constPosition&p2){floatdx=p2.x-p1.x;floatdy=p2.y-p1.y;returnstd::sqrt(dx*dx+dy*dy);}intmain(){sf::Fontfont;if(!font.loadFromFile("./arial.ttf")){return-1;}sf::RenderWindowwindow(sf::VideoMode(450,800),"SFML Palavras");window.setFramerateLimit(60);Positionposition={400,300};std::vector<Letter>lettersOnScreen;boolmouseDown=false;intcounter=0;while(window.isOpen()){sf::Eventevent;while(window.pollEvent(event)){if(event.type==sf::Event::Closed){window.close();}if(event.type==sf::Event::MouseButtonPressed){mouseDown=true;}if(event.type==sf::Event::MouseButtonReleased){mouseDown=false;}}if(mouseDown){sf::Vector2imousePos=sf::Mouse::getPosition(window);Positionmouse={static_cast<float>(mousePos.x),static_cast<float>(mousePos.y)};floatd=distance(position,mouse);floatfontSize=5+d/2;if(counter>=letters.size()){counter=0;}sf::Texttext;text.setFont(font);text.setString(letters[counter]);text.setCharacterSize(static_cast<unsignedint>(fontSize));text.setFillColor(sf::Color::Black);floatstepSize=text.getLocalBounds().width;if(d>stepSize){floatangle=std::atan2(mouse.y-position.y,mouse.x-position.x);text.setPosition(position.x,position.y);text.setRotation(angle*180.f/3.14f);lettersOnScreen.push_back({text,255});position.x+=std::cos(angle)*stepSize;position.y+=std::sin(angle)*stepSize;++counter;}}window.clear(sf::Color::White);for(autoit=lettersOnScreen.begin();it!=lettersOnScreen.end();){it->text.setFillColor(sf::Color(0,0,0,static_cast<sf::Uint8>(it->lifetime)));window.draw(it->text);it->lifetime-=2;if(it->lifetime<=0){it=lettersOnScreen.erase(it);}else{++it;}}window.display();}returnEXIT_SUCCESS;}// g++ main.cpp -lsfml-graphics -lsfml-window -lsfml-system
Top comments (0)