tomek5321 Temat założony przez niniejszego użytkownika |
[SMFL] Odliczanie czasu » 2012-01-21 18:52:28 Mając taki kodzik: #include <SFML/Window.hpp> #include <SFML/Graphics.hpp> #include <SFML/Audio.hpp> #include "Collision.h" #include <sstream> #include <iostream> float zycie; int dziki; int c_dz, c_nie, c_wilk, gczas;
sf::Event zdarzenie; sf::String tekst; sf::Image obohater, owrog, otlo, oserce, okursor, olas1, optak, oniedzwiedz, optak2, ozegar; sf::Sprite tlo, bohater, wrog, serce, kursor, las1, ptak, niedzwiedz, ptak2, zegar; sf::Music dzik, dzwiek_kolizji, klik, dz_ptaki; sf::Clock z_dzik, z_niedzwiedz, z_wilk, glowny_czas; sf::RenderWindow oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "Dzik i Indyk", sf::Style::Fullscreen );
int main() { oknoAplikacji.ShowMouseCursor( false ); oknoAplikacji.SetFramerateLimit( 500 ); zycie = 10; dziki = 10; if( !obohater.LoadFromFile( "Obiekty/dzik.png" ) || !owrog.LoadFromFile( "Obiekty/wilk.png" ) || !ozegar.LoadFromFile( "Obiekty/zegar.png" ) || !otlo.LoadFromFile( "Obiekty/tlo1.jpg" ) || !olas1.LoadFromFile( "Obiekty/las1.png" ) || !optak.LoadFromFile( "Obiekty/ptak.png" ) || !optak2.LoadFromFile( "Obiekty/ptak2.png" ) || !oniedzwiedz.LoadFromFile( "Obiekty/mis.png" ) || !okursor.LoadFromFile( "Obiekty/kursor.png" ) ) return EXIT_FAILURE; if( !dz_ptaki.OpenFromFile( "Muzyka/ptaki.wav" ) || !klik.OpenFromFile( "Muzyka/klik.wav" ) || !dzik.OpenFromFile( "Muzyka/dzik1.wav" ) || !dzwiek_kolizji.OpenFromFile( "Muzyka/kolizja.wav" ) ) return EXIT_FAILURE; tlo.SetImage( otlo ); las1.SetImage( olas1 ); kursor.SetImage( okursor ); kursor.SetScale( 0.5, 0.5 ); ptak.SetImage( optak ); ptak.SetPosition( 540, 250 ); ptak2.SetImage( optak2 ); ptak2.SetPosition( 500, 180 ); zegar.SetImage( ozegar ); zegar.SetPosition( 300, 60 ); niedzwiedz.SetImage( oniedzwiedz ); niedzwiedz.SetPosition( 500, 100 ); niedzwiedz.SetCenter( oniedzwiedz.GetWidth() / 2.0f, oniedzwiedz.GetHeight() / 2.0f ); bohater.SetImage( obohater ); bohater.SetPosition( 300, 300 ); bohater.SetScale( 0.5, 0.5 ); bohater.SetCenter( obohater.GetWidth() / 2.0f, obohater.GetHeight() / 2.0f ); wrog.SetImage( owrog ); wrog.SetPosition( 100, 100 ); wrog.SetScale( 0.5, 0.5 ); wrog.SetCenter( owrog.GetWidth() / 2.0f, owrog.GetHeight() / 2.0f ); while( oknoAplikacji.IsOpened() ) { while( oknoAplikacji.GetEvent( zdarzenie ) ) { if( zdarzenie.Type == sf::Event::Closed ||( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Escape ) ) oknoAplikacji.Close(); const sf::Input & mysz = oknoAplikacji.GetInput(); kursor.SetPosition( mysz.GetMouseX(), mysz.GetMouseY() ); if( zdarzenie.Type == sf::Event::MouseButtonReleased && Collision::PixelPerfectTest( bohater, kursor ) == true ) { klik.Play(); dziki--; bohater.SetX( 1000 ); bohater.SetY( 1000 ); z_dzik.Reset(); } if( zdarzenie.Type == sf::Event::MouseButtonReleased && Collision::PixelPerfectTest( niedzwiedz, kursor ) == true ) { klik.Play(); niedzwiedz.SetX( 1000 ); niedzwiedz.SetY( 1000 ); z_niedzwiedz.Reset(); } if( zdarzenie.Type == sf::Event::MouseButtonReleased && Collision::PixelPerfectTest( wrog, kursor ) == true ) { klik.Play(); wrog.SetX( 1000 ); wrog.SetY( 1000 ); z_wilk.Reset(); } if( zdarzenie.Type == sf::Event::MouseButtonReleased && Collision::PixelPerfectTest( ptak, kursor ) == true ) { klik.Play(); dz_ptaki.Play(); ptak.SetX( 1000 ); ptak.SetY( 1000 ); } if( zdarzenie.Type == sf::Event::MouseButtonReleased && Collision::PixelPerfectTest( ptak2, kursor ) == true ) { klik.Play(); dz_ptaki.Play(); ptak2.SetX( 1000 ); ptak2.SetY( 1000 ); } if( zdarzenie.Key.Code == sf::Key::F1 ) { sf::Image zrzutEkranu = oknoAplikacji.Capture(); zrzutEkranu.SaveToFile( "zrzut-ekranu.png" ); } } const sf::Input & sterowanie = oknoAplikacji.GetInput(); if( sterowanie.IsKeyDown( sf::Key::Left ) ) { if( Collision::PixelPerfectTest( bohater, wrog ) == true ) bohater.Move( + 30, 0 ); else bohater.Move( - 0.2, 0 ); bohater.FlipX( false ); } if( sterowanie.IsKeyDown( sf::Key::Right ) ) { if( Collision::PixelPerfectTest( bohater, wrog ) == true ) bohater.Move( - 30, 0 ); else bohater.Move( + 0.2, 0 ); bohater.FlipX( true ); } if( sterowanie.IsKeyDown( sf::Key::Up ) ) { if( Collision::PixelPerfectTest( bohater, wrog ) == true ) bohater.Move( 0, + 30 ); else bohater.Move( 0, - 0.2 ); } if( sterowanie.IsKeyDown( sf::Key::Down ) ) { if( Collision::PixelPerfectTest( bohater, wrog ) == true ) bohater.Move( 0, - 30 ); else bohater.Move( 0, + 0.2 ); } c_dz =( rand() % 3 ) + 1; c_nie =( rand() % 4 ) + 2; c_wilk =( rand() % 6 ) + 2; if( z_dzik.GetElapsedTime() > c_dz ) { int los1 =( rand() % 3 ) + 1; if( los1 == 1 ) { bohater.SetX( 247 ); bohater.SetY( 264 ); bohater.FlipX( true ); } if( los1 == 2 ) { bohater.SetX( 580 ); bohater.SetY( 520 ); bohater.FlipX( false ); } if( los1 == 3 ) { bohater.SetX( 94 ); bohater.SetY( 530 ); } if( los1 == 4 ) { bohater.SetX( 300 ); bohater.SetY( 600 ); } if( los1 == 5 ) { bohater.SetX( 200 ); bohater.SetY( 450 ); } z_dzik.Reset(); } if( z_niedzwiedz.GetElapsedTime() > c_nie ) { int los1 =( rand() % 5 ) + 1; if( los1 == 1 ) { niedzwiedz.SetX( 100 ); niedzwiedz.SetY( 300 ); } if( los1 == 2 ) { niedzwiedz.SetX( 300 ); niedzwiedz.SetY( 100 ); } if( los1 == 3 ) { niedzwiedz.SetX( 400 ); niedzwiedz.SetY( 500 ); } if( los1 == 4 ) { niedzwiedz.SetX( 300 ); niedzwiedz.SetY( 600 ); } if( los1 == 5 ) { niedzwiedz.SetX( 200 ); niedzwiedz.SetY( 450 ); } z_niedzwiedz.Reset(); } if( z_wilk.GetElapsedTime() > c_wilk ) { int los1 =( rand() % 5 ) + 1; if( los1 == 1 ) { wrog.SetX( 100 ); wrog.SetY( 300 ); } if( los1 == 2 ) { wrog.SetX( 300 ); wrog.SetY( 100 ); } if( los1 == 3 ) { wrog.SetX( 400 ); wrog.SetY( 500 ); } if( los1 == 4 ) { wrog.SetX( 300 ); wrog.SetY( 600 ); } if( los1 == 5 ) { wrog.SetX( 200 ); wrog.SetY( 450 ); } z_wilk.Reset(); } srand( time( NULL ) ); int los1 =( rand() % 4 ) + 1; if( los1 == 1 ) { ptak2.Move( + 0.1, - 0.1 ); ptak2.FlipX( true ); ptak2.FlipY( false ); } if( los1 == 2 ) { ptak2.Move( - 0.1, - 0.1 ); ptak2.FlipX( false ); ptak2.FlipY( false ); } if( los1 == 3 ) { ptak2.Move( + 0.1, + 0.1 ); ptak2.FlipX( true ); ptak2.FlipY( true ); } if( los1 == 4 ) { ptak2.Move( - 0.1, + 0.1 ); ptak2.FlipX( false ); ptak2.FlipY( true ); } gczas = glowny_czas.GetElapsedTime(); std::ostringstream buffer; buffer << "Dziki: " << dziki << " Czas: " << gczas; tekst.SetText( buffer.str() ); tekst.SetPosition( 70, 540 ); oknoAplikacji.Clear( sf::Color::Black ); oknoAplikacji.Draw( tlo ); oknoAplikacji.Draw( niedzwiedz ); oknoAplikacji.Draw( wrog ); oknoAplikacji.Draw( bohater ); oknoAplikacji.Draw( ptak2 ); oknoAplikacji.Draw( ptak ); oknoAplikacji.Draw( las1 ); oknoAplikacji.Draw( serce ); oknoAplikacji.Draw( tekst ); oknoAplikacji.Draw( kursor ); oknoAplikacji.Display(); } return 0; }
Głównie chodzi o ten fragment: gczas = glowny_czas.GetElapsedTime(); std::ostringstream buffer; buffer << "Dziki: " << dziki << " Czas: " << gczas; tekst.SetText( buffer.str() ); tekst.SetPosition( 70, 540 );
Jak zrobić, aby czas był odliczany od 60 sekund w dół? |