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

[SFML 2.0] Problem z przesuwaniem obiektu

Ostatnio zmodyfikowano 2012-12-03 22:17
Autor Wiadomość
Sewo
Temat założony przez niniejszego użytkownika
[SFML 2.0] Problem z przesuwaniem obiektu
» 2012-12-03 19:23:34
Witam.
Mam problem z poruszaniem obiektu. Korzystam z kursu na stronie. Jest on na 1.6 ale chyba powinno działać po małych zmianach. Wszystko idzie dobrze, dopóki nie dodam
C/C++
for( VObiektyT::iterator i = vObiekty.begin(); i < vObiekty.end(); ++i )
     i->aktualizujPolozenie();

Obiekty uciekają mi poza okienko. Nie mam pojęcia co jest nie tak.
P-70296
Mrovqa
» 2012-12-03 20:29:12
Nie masz zielonego pojęcia co piszesz albo niezbyt oczekujesz pomocy z tego forum. Wiesz co robi ten kod, który nam zamieściłeś? Myślisz, że ktokolwiek Ci na podstawie tego kodu stwierdzi gdzie masz błąd? Daj kod, ale ten odpowiedzialny za to, co działa źle.
P-70300
Sewo
Temat założony przez niniejszego użytkownika
» 2012-12-03 21:43:08
C/C++
int main()
{
   
    sf::CircleShape kolo;
    kolo.setRadius( 5 );
    sf::RenderWindow oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "Wytwarzanie Gier 2D, C++ | http://cpp0x.pl" );
   
    typedef std::vector < RObiekt > VObiektyT;
    VObiektyT vObiekty;
   
    vObiekty.push_back( RObiekt( 50, 50, 1.0 ) );
   
    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();
           
        } //while
       
       
        for( VObiektyT::iterator i = vObiekty.begin(); i < vObiekty.end(); ++i )
             i->aktualizujPolozenie();
       
        oknoAplikacji.clear();
       
        for( VObiektyT::iterator i = vObiekty.begin(); i != vObiekty.end(); ++i )
        {
            kolo.setPosition( i->x, i->y );
        }
        oknoAplikacji.draw( kolo );
        oknoAplikacji.display();
    }
    return 0;
}[ cpp / ]
Resztę mam tak samo jak w przykładzie.
P-70304
Mrovqa
» 2012-12-03 21:49:44
Widać nawet nie wiesz, który kod wylicza pozycję obiektu... Szkoda, że nie rozumiesz tego co piszesz.

Btw chodzi Ci o to, że część koła wychodzi poza okno?
kolo.setPosition( i->x, i->y );
 to jest ustalenie pozycji środka koła.
P-70305
Sewo
Temat założony przez niniejszego użytkownika
» 2012-12-03 22:12:01
To mógłbyś wytłumaczyć, jak działa
C/C++
for( VObiektyT::iterator i = vObiekty.begin(); i < vObiekty.end(); ++i )
     i->aktualizujPolozenie();

for( VObiektyT::iterator i = vObiekty.begin(); i != vObiekty.end(); ++i )
{
    kolo.setPosition( i->x, i->y );
}
oknoAplikacji.draw( kolo );
To wyświetla mi koło w punkcie x,y.
a aktualizujPolozenie()?
Kurde, przepraszam za być może niski poziom pytań, ale naprawdę chciałbym się tego nauczyć.
P-70308
Mrovqa
» 2012-12-03 22:17:11
To popatrz do tej metody, co ona robi. Zanim weźmiesz się za pisanie gier (w bibliotece zgodnej z OOP) to najpierw naucz się OOP. Poczytaj o klasach, metodach, ewentualnie o dziedziczeniu. Nie ma sensu Ci czegoś tłumaczyć, czego pewnie i tak nie zrozumiesz.
P-70309
« 1 »
  Strona 1 z 1