[C++] tekst animacja
Ostatnio zmodyfikowano 2014-03-07 11:26
barttek8 Temat założony przez niniejszego użytkownika |
[C++] tekst animacja » 2014-03-06 00:38:11 Witam, jestem nowy na forum i także zielony jeśli chodzi o programowanie. Posiadam więdzę z TurboPascala i języka C, lecz C nie tak bardzo dużą. Także do rzeczy. Potrzebuje pomocy, chciałbym zrobić program a dokładnie animacje tekstową, takie które są w keygeneratorach. Mój programista ma urodziny i chciałem mu taki prezent zrobić by tekst się pojawiał falowany z życzeniami i muzyka 8bit.
Czy zna ktoś może sposób na zrobienie tego? Czy to jest bardzo skomplikowane niż mi się wydaje. Przepraszam za taki brak wiedzy lecz dopiero zaczynam przygodę z programowaniem.
Pozdrawiam! |
|
RazzorFlame |
» 2014-03-06 11:05:30 |
|
barttek8 Temat założony przez niniejszego użytkownika |
» 2014-03-06 21:45:11 |
|
michal11 |
» 2014-03-06 21:58:19 |
|
RazzorFlame |
» 2014-03-07 11:02:59 Aaa to bez problemu. Masz pare linii tekstu: Dla każdej lini musisz mieć: pozycje od której ma się zaczynać tekst i długość. Przykład: std::string tekst = "Some text..."; int posFromX = 2; int posFromY = 2; int dlugosc = tekst.length();
Teraz tylko wystarczy ułożyć pętle która od tyłu wyświetla tekst: void gotoxy( int x, int y ) { COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord ); } for( int i = dlugosc - 1; i >= 0; i-- ) { animateChar( tekst[ i ], posFromX + i + 1, posFromY ); } void animateChar( char znak, int posx, int posy ) { for( int x = 0; x <= posx; x++ ) { gotoxy( x, posy ); cout << znak; Sleep( 100 ); if( x != posx ) { gotoxy( x, posy ); cout << " "; } } }
|
|
RazzorFlame |
» 2014-03-07 11:26:58 Kurcze, tak mi się to spodobało, że aż napisałem klase do tego. Trochę łatwiejsza w obsłudze: void gotoxy( int x, int y ) { COORD cord; cord.X = x; cord.Y = y; SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), cord ); }
class KeyAnimation { typedef std::vector < string > vTekst; vTekst m_Teksty; void animateChar( char znak, int posx, int posy ) { if( znak == 32 ) { gotoxy( posx, posy ); cout << " "; return; } for( int x = 0; x <= posx; x++ ) { gotoxy( x, posy ); cout << znak; Sleep( 2 ); if( x != posx ) { gotoxy( x, posy ); cout << " "; } } } public: void animate( int x, int y ) { int posFromX = x; int posFromY = y; for( int i = 0; i < m_Teksty.size(); i++ ) { int dlugosc = m_Teksty[ i ].length(); for( int j = dlugosc - 1; j >= 0; j-- ) { animateChar( m_Teksty[ i ][ j ], posFromX + j + 1, posFromY ); } posFromY++; } } vTekst & getTexts() { return m_Teksty; } };
Potem aby animować tekst: KeyAnimation animacja; animacja.getTexts().push_back( "Text numer 1 -> przykladowy text" ); animacja.getTexts().push_back( "Text numer 2 -> przykladowy text" ); animacja.getTexts().push_back( "Text numer 3 -> przykladowy text" ); animacja.getTexts().push_back( "Text numer 4 -> przykladowy text" ); animacja.getTexts().push_back( "Text numer 5 -> przykladowy text" ); animacja.getTexts().push_back( "Text numer 6 -> przykladowy text" ); animacja.animate( 0, 0 );
Możesz do woli dodawać tekst ;) |
|
« 1 » |