Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

zmiana wartości dla retu w if

Ostatnio zmodyfikowano 2012-01-18 01:05
Autor Wiadomość
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
C/C++
#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" ";
    // tu można dopisać jeszcze inne znaki, które chcemy mieć zaimportowane
    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 ); //wymiary (px)i kolor ,gdy wpiszemy Black siê nie zmienia
    sf::Sprite naszSprajt;
    naszSprajt.SetImage( obrazek );
    naszSprajt.SetPosition( 400, 300 ); //umiejscowienie œrodka obiektu)//odsuniecie od œrodka
    naszSprajt.SetScale( 10, 10 ); //przeskalowanie mno¿enie wartoœci
    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 );
                // printf( "%s", tab );// tekst+=" ";//  tekst+=o;  //  tekst+=".bmp";//   tekst = "zapis";//            std::cout << tekst;}
                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; }
            //b jest zmienn¹ w tym przypadku to wartoœæ odbierana lub dodawana do a
            //za pomoc¹ D i O mo¿na j¹ mno¿yæ lkub dzieliæ
            if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::O )
            { b /= 10;
                std::cout << b << "b" << std::endl; }
            //std::cout<<"podaj wartosc b";m //      std::cout<<b<<std::endl;//       std::cin>>b;
            if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::M )
            { a -= b;
                std::cout << a << "a" << std::endl; }
            //a to zmienna ,a tu jest wartoœci¹ prêdkoœci za pomoc¹ M i P odejmujemy lub dodajemy b
            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();
           
        } //while
        naszSprajt.SetCenter( obrazek.GetWidth() / e, obrazek.GetHeight() / f );
        naszSprajt.SetPosition( c, d );
        //prêdkoœæ obracania wartoœæ (a),a jeœli wartoœæ jest ujemna obraca siê w drug¹ strone
        naszSprajt.Rotate( a );
       
       
        //Tu sprawdzanie czy mysz jest nad sprajtem czy nie oraz modyfikowanie jego koloru
        const sf::Input & sterowanie = oknoAplikacji.GetInput();
        sf::Vector2f punkt = naszSprajt.TransformToLocal( sf::Vector2f(( float ) sterowanie.GetMouseX(),( float ) sterowanie.GetMouseY() ) );
        // wartoœæ(px) czêœci bez wp³ywu myszki
        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 ); //zmian koloru jeœli najedziesz na obiekt zmienia siê ,a tu zmieni siê z czerwonego na zielony
       
       
        oknoAplikacji.Clear( sf::Color( 255, 0, 0 ) );
       
       
       
       
        if( b < 1 )
        { b = 1; }
        if( a > 10000 )
        { a = 1; }
        if( a < be )
        { a = 1; }
       
       
        //oknoAplikacji.Draw(naszSprajt );
       
        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 );
       
       
       
       
        // sf::Shape okrag = sf::Shape::Circle(500, 400,50, sf::Color::Green,1,sf::Color::Blue);
        oknoAplikacji.Display();
    } //while
    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
P-48617
DejaVu
» 2012-01-18 01:05:34
Proszę abyś starał się używać znaczniki dostępne na forum. To ułatwia czytanie postów i analizę kodu (» KursyKurs STC kurs). Co do Twojego opisu problemu. Program będzie działał zawsze tak jak go zaprogramujesz. Jeżeli coś nie działa jak powinno to tylko i wyłącznie dlatego, że popełniłeś jakiś logiczny błąd w swoim rozumowaniu. Przy pracy z dużymi projektami zdarza się, że podczas procesu kompilacji, a konkretniej podczas incremental build jakiś fragment kodu wynikowego zostanie źle zmodyfikowany i aplikacja nie będzie wówczas działała prawidłowo. Rozwiązaniem tego jest wyczyszczenie plików tymczasowych czyli tzw. Rebuild All. Takie przypadki występują jednak bardzo rzadko i gwarantuję Ci, że nie dotkną one prędko Twoich projektów. Jeżeli uważasz, że Twój kod jest teoretycznie dobrze napisany - spróbuj go całego przebudować. Jeżeli nadal będzie działał źle to na 100% popełniłeś błąd w swoim kodzie, który czasami wynika z literówki, a czasami wynika z błędów logicznych, których już znacznie trudniej się szuka. Każdy programista z dużym doświadczeniem posiada dużą dozę sceptycyzmu do kodu, który tworzy ponieważ z doświadczenia wie, że choć język programowania zna doskonale oraz wie dokładnie co chce napisać to potrafi w kodzie porobić błędy, które ujawniają się dopiero po przetestowaniu kodu w praktyce. Reasumując: każdy programista zmaga się ze źle działającym kodem niezależnie czy ma on małe doświadczenie czy duże. Doświadczony programista statystycznie popełni błędów mniej, jednak nadal będzie je popełniał mimo woli. Doświadczony programista zlokalizuje wielokrotnie szybciej ewentualne błędy niż 'młody wilk', jednak to są lata praktyki, które po prostu w tym przypadku procentują.
P-48621
« 1 »
  Strona 1 z 1