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

Problem z instalacją SFML

Ostatnio zmodyfikowano 2017-12-05 20:45
Autor Wiadomość
Corvette653
Temat założony przez niniejszego użytkownika
Czy ktoś mógłby wkleić ten kod w swoim kompilatorze?
» 2017-12-02 10:03:27
nie wiem co się stało jednak ten kod wyświetla u mnie białe okno konsoli...

C/C++
#include <SFML/Graphics.hpp>

using namespace sf;

int main()
{
    RenderWindow oknoAplikacji( VideoMode( 1000, 600, 32 ), "Najtrudniejsza gra na swiecie" );
    oknoAplikacji.clear( Color::Green );
   
    while( oknoAplikacji.isOpen() )
    {
        sf::Event zdarzenie;
        while( oknoAplikacji.pollEvent( zdarzenie ) )
        {
            if( zdarzenie.type == sf::Event::Closed )
                 oknoAplikacji.close();
           
            if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Escape )
                 oknoAplikacji.close();
           
        }
       
        oknoAplikacji.clear( Color::Green );
    }
    return 0;
}

Wydaje mi się że nie jest trudny do zrozumienia :)
Jednak albo coś jest tutaj źle albo mam coś z kompilatorem
Z góry dziękuje za sprawdzenie (:
P-167454
mateczek
» 2017-12-02 11:59:46
Masz przykładowy kod u góry wątku i porównaj sobie oba i sam zobacz jakiej ważnej funkcji Ci brakuje!!!
P-167456
Corvette653
Temat założony przez niniejszego użytkownika
nie rozumiem tego
» 2017-12-02 20:40:57
czemu po prawie każdej pętli programu musi stać:

oknoAplikacji.display(); ( czy jak kto sobie to nazwie )

teraz moją główną pętlą programu jest :

while ( i != 0 )

lecz nadaj bez display aplikacja nie działa.
P-167478
Corvette653
Temat założony przez niniejszego użytkownika
coraz bliżej końca coraz więcej problemów :)
» 2017-12-03 19:47:54
oto CZĘŚĆ mojego programu:

C/C++
if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Escape )
{
    do
    {
        oknoAplikacji.draw( wyszedles );
        oknoAplikacji.draw( Tak );
        oknoAplikacji.draw( Nie );
        if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left )
        {
            i = - 1;
        }
    } while( i == 1 );
   

Ma ona robić o to:
jeśli użytkownik wciśnie esc
{
  rób: // minimum 1 raz
  {
    rysuj obraz wyszedles
    rysuj obraz Tak
    rysuj obraz Nie
    jeśli użytkownik naciśnie lewy przycisk myszy
      przypisz -1 do i // zakończ pętle
  } dopóki i jest równe 1
}

czyli jeśli użytkownik wciśnie esc rysuj te zdjęcia aż użytkownik wciśnie lpm

jednak coś jest nie tak i program po wciśnięciu esc przestaje reagować na inne przyciski np strzałki które mam dalej ( to dobrze ) lecz nie rysuje moich obrazów oraz nie reaguje na lpm ( po wciśnięciu kilku przycisków wyświetla się okno windows: program przestał działać )
oczywiście ten tekst ma sprawdzać czy użytkownik na pewno chce wyjść z aplikacji lecz jest jeszcze nie dokończony.
P-167508
Luq
» 2017-12-03 21:22:20
C/C++
do
{
    oknoAplikacji.draw( wyszedles );
    oknoAplikacji.draw( Tak );
    oknoAplikacji.draw( Nie );
    if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left )
    {
        i = - 1;
    }
} while( i == 1 );
Program wchodzi w pętlę, w której nie pobiera kolejnych zdarzeń z kolejki, więc jak ma zareagować na wciśnięcie LPM?

nie rysuje moich obrazów
Bo nie wywołujesz metody display.
P-167511
Corvette653
Temat założony przez niniejszego użytkownika
» 2017-12-04 18:35:55
faktycznie troche zawaliłem :)
Lecz to również nie działa ( tzn całkiem dobrze )

C/C++
do
{
    oknoAplikacji.draw( wyszedles );
    oknoAplikacji.draw( Tak );
    oknoAplikacji.draw( Nie );
   
    sf::Event zdarzenie;
   
    if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left )
    {
        i = 0;
    }
    oknoAplikacji.display();
} while( i == 1 );


program owszem rysuje już moje obrazy lecz nie reaguje na lpm ( ani nic innego )

EDIT:
napisze to od razu :)
warunkiem pętli nie będzie mogło być i == 1 ponieważ użytkownik będzie ustawiał i z 1 na 0 lub klikając nie ( u mnie to jest dosłownie anuluj ) pozostawi 1. Warunek tej pętli musi brzmieć while " nie wciśnięto TAK || nie wciśnięto NIE "
P-167530
mateczek
» 2017-12-04 18:47:44
dalej nie pobierasz zdarzeń z kolejki
C/C++
while( oknoAplikacji.pollEvent( zdarzenie ) )
{
}
P-167532
Corvette653
Temat założony przez niniejszego użytkownika
troche lepiej musze zrozumieć niektóre funkce sfml
» 2017-12-04 19:27:06
tak jak myślałem że
.display tylko sprawdza czy okno jest otwarte i jeśli nie ma w pobliżu czegoś co musi wiedzieć co się dzieje z oknem to nie jest ono potrzebne
tak myślałem że tutaj wystarczy Event
 
dziękuje :)
P-167534
1 2 « 3 » 4
Poprzednia strona Strona 3 z 4 Następna strona