maestro Temat założony przez niniejszego użytkownika |
zmiana wartości dla retu w if » 2012-01-17 23:24:35 Właściwie problemu nie ma ,ale wpisałem coś takiego #include <SFML/Graphics.hpp> #include <iostream> #include <string> #include <cstdio>
const sf::Unicode::Text ZnakiPL() { std::wstring znaki; znaki = L"abcdefghijklmnopqrstuvwxyz"; znaki += L"ABCDEFGHIJKLMNOPQRSTUVWXYZ"; znaki += L"0123456789"; znaki += L"ąćęłńóśźż"; znaki += L"ĄĆĘŁŃÓŚŹŻ"; znaki += L" "; return znaki; }
int main() { sf::RenderWindow oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "Kurs SFML - http://cpp0x.pl" ); sf::Font mojaCzcionka; mojaCzcionka.LoadFromFile( "arial.ttf", 30 * 5, ZnakiPL() ); sf::Shape naszKsztalt; naszKsztalt.AddPoint( 120, 100, sf::Color::Red, sf::Color( 246, 215, 99, 34 ) ); naszKsztalt.AddPoint( 100, 100, sf::Color::Red, sf::Color( 246, 215, 99 ) ); naszKsztalt.AddPoint( 100, 200, sf::Color::Green, sf::Color( 208, 163, 46 ) ); naszKsztalt.AddPoint( 100, 300, sf::Color::Blue, sf::Color( 153, 109, 0 ) ); naszKsztalt.AddPoint( 120, 300, sf::Color::Blue, sf::Color( 153, 109, 0 ) ); naszKsztalt.AddPoint( 120, 200, sf::Color::Green, sf::Color( 208, 163, 46 ) ); naszKsztalt.EnableOutline( true ); naszKsztalt.SetOutlineWidth( 10 ); naszKsztalt.SetPointColor( 1, sf::Color::Black ); naszKsztalt.SetPointOutlineColor( 1, sf::Color( 6, 22, 11 ) ); naszKsztalt.SetScale( 2, 0.5 ); sf::Shape okrag2 = sf::Shape::Circle( 500, 400, 50, sf::Color::Green, 1, sf::Color::Blue ); okrag2.EnableFill( false ); sf::Image obrazek; obrazek.Create( 30, 23, sf::Color::White ); sf::Sprite naszSprajt; naszSprajt.SetImage( obrazek ); naszSprajt.SetPosition( 400, 300 ); naszSprajt.SetScale( 10, 10 ); naszSprajt.SetCenter( obrazek.GetWidth() / 2.0f, obrazek.GetHeight() / 2.0f ); naszSprajt.SetColor( sf::Color( 0x00, 0xff, 0x00, 0x80 ) ); sf::Image obrazek2; obrazek2.LoadFromFile( "krystal.bmp" ); obrazek2.SetSmooth( false ); obrazek2.CreateMaskFromColor( sf::Color( 255, 255, 255 ), 125 ); obrazek2.CreateMaskFromColor( sf::Color( 0, 255, 0 ), 125 ); sf::Sprite naszSprajt2; naszSprajt2.SetImage( obrazek2 ); naszSprajt2.SetPosition( 400, 300 ); naszSprajt2.SetScale( 1, 1 ); sf::String tekst( "Info za pomoco strzalek sterujesz krysztalem" ); tekst.SetSize( tekst.GetSize() * 1 ); tekst.SetPosition( 0, 200 ); tekst.SetFont( mojaCzcionka ); sf::String tekst3; tekst3.SetSize( 12 ); tekst3.SetText( "to jest bardzo dlugi napis" ); tekst3.SetColor( sf::Color::Red ); tekst3.SetFont( mojaCzcionka ); float e = 2; float c = 400; float d = 300; float f = 2; float a = 1; float b = 1; int o = 0; char tab[ 100 ]; int be = 0; int g = 100; be -= 10000; int retu = 0; while( oknoAplikacji.IsOpened() ) { sf::Event zdarzenie; while( oknoAplikacji.GetEvent( zdarzenie ) ) { if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Num1 ) { retu = 1; } if( retu = 1 ) { if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Num1 ) { retu = 2; } } if( zdarzenie.Key.Code == sf::Key::F2 ) { obrazek2.SaveToFile( "obrazek.jpg" ); } if( zdarzenie.Key.Code == sf::Key::F1 ) { sf::Image zrzutEkranu = oknoAplikacji.Capture(); sprintf( tab, "Zapis %d.bmp", o ); zrzutEkranu.SaveToFile( tab ); o++; } if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::D ) { b *= 10; std::cout << b << "b" << std::endl; } if( b < 1 ) { b = 1; } if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::O ) { b /= 10; std::cout << b << "b" << std::endl; } if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::M ) { a -= b; std::cout << a << "a" << std::endl; } if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::P ) { a += b; std::cout << a << "a" << std::endl; } if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Q ) { c -= 10.5; std::cout << c << "c" << std::endl; } if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::W ) { c += 10.5; std::cout << c << "c" << std::endl; } if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::E ) { d -= 10.5; std::cout << d << "d" << std::endl; } if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::R ) { d += 10.5; std::cout << d << "d" << std::endl; } if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::T ) { e -= 0.1; std::cout << e << "e" << std::endl; } if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Y ) { e += 0.1; std::cout << e << "e" << std::endl; } if( zdarzenie.Type == sf::Event::Closed ) oknoAplikacji.Close(); } naszSprajt.SetCenter( obrazek.GetWidth() / e, obrazek.GetHeight() / f ); naszSprajt.SetPosition( c, d ); naszSprajt.Rotate( a ); const sf::Input & sterowanie = oknoAplikacji.GetInput(); sf::Vector2f punkt = naszSprajt.TransformToLocal( sf::Vector2f(( float ) sterowanie.GetMouseX(),( float ) sterowanie.GetMouseY() ) ); bool bCzyZaznaczony =( punkt.x >= 0 && punkt.y >= 0 && punkt.x <= obrazek.GetWidth() && punkt.y <= obrazek.GetHeight() ); naszSprajt.SetColor( bCzyZaznaczony ? sf::Color::Green: sf::Color::Yellow ); oknoAplikacji.Clear( sf::Color( 255, 0, 0 ) ); if( b < 1 ) { b = 1; } if( a > 10000 ) { a = 1; } if( a < be ) { a = 1; } oknoAplikacji.Draw( sf::Shape::Line( 300, 300, 350, 350, 5, sf::Color::Blue ) ); oknoAplikacji.Draw( sf::Shape::Rectangle( 300, 400, 400, 350, sf::Color::Green, 1, sf::Color::Blue ) ); std::cout << retu; if( retu = 0 ) { const sf::Input & sterowanie2 = oknoAplikacji.GetInput(); if( sterowanie2.IsKeyDown( sf::Key::Left ) ) naszSprajt2.Move( - 0.2, 0 ); if( sterowanie2.IsKeyDown( sf::Key::Right ) ) naszSprajt2.Move( + 0.2, 0 ); if( sterowanie2.IsKeyDown( sf::Key::Up ) ) naszSprajt2.Move( 0, - 0.2 ); if( sterowanie2.IsKeyDown( sf::Key::Down ) ) naszSprajt2.Move( 0, + 0.2 ); oknoAplikacji.Draw( naszSprajt2 ); } oknoAplikacji.Draw( okrag2 ); oknoAplikacji.Draw( naszKsztalt ); oknoAplikacji.Draw( tekst ); oknoAplikacji.Draw( sf::Shape::Rectangle( 10, 10, g, 30, sf::Color::White, 2, sf::Color::Green ) ); ::glEnable( GL_SCISSOR_TEST ); ::glScissor( 12, oknoAplikacji.GetHeight() - 28, g - 14, 16 ); tekst3.SetPosition( 12, 12 ); oknoAplikacji.Draw( tekst3 ); ::glDisable( GL_SCISSOR_TEST ); oknoAplikacji.Display(); } return 0; } dla mnie istotne jest użycie klawisza 1 i wartość żeby nie zmieniała się na 0 tylko na podane w if retu zmienia wartość na 1 gdy poruszę myszką lub dowolny klawisz,ale potem jest znowu 0 czy program mógł się pomieszać swoje działanie w kodzie |