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

[SFML2] Pobranie pozycji obiektu innej klasy

Ostatnio zmodyfikowano 2016-01-04 21:02
Autor Wiadomość
Lukasz1212
Temat założony przez niniejszego użytkownika
» 2016-01-04 20:46:11
Dynamicznie alokowałem ,żeby każdy pocisk móc usunąć jeśli wyjdzie poza okienko. Z drugim się zgodzę bo to pisałem tak dla testów. W takim razie jak mogę zastąpić to ,żeby nie używać współrzędnych gracza? Możesz mnie jakoś naprowadzić? Plan był taki: pobieram gdzie jest gracz i jak wciskam spację to pocisk ustawia się w miejsce gracza i wędruje w górę.
P-142872
pekfos
» 2016-01-04 20:51:21
Statek strzela, a pocisk tylko leci w górę. Złóż sensowne zdanie po polsku i podział na klasy masz prawie gotowy.

Dynamicznie alokowałem ,żeby każdy pocisk móc usunąć jeśli wyjdzie poza okienko.
To ma jeszcze mniej sensu, niż moja teoria na ten temat, jak zobaczyłem tą alokację.
P-142874
Lukasz1212
Temat założony przez niniejszego użytkownika
» 2016-01-04 20:54:42
Czyli metoda strzelająca będzie w Graczu? Zaraz coś pokombinuję ;) W takim przypadku w Graczu chcę użyć obiektu Pocisk czyli tej kulki
P-142875
pekfos
» 2016-01-04 21:00:23
W takim przypadku w Graczu chcę użyć obiektu Pocisk czyli tej kulki
Co..? Wydaje mi się, czy znowu niepotrzebnie komplikujesz? Jedyne co musi zrobić gracz, by wystrzelić pocisk, to utworzyć obiekt klasy Pocisk.
P-142876
Lukasz1212
Temat założony przez niniejszego użytkownika
» 2016-01-04 21:02:27
No faktycznie :) przekombinowałem, jestem początkujący w klasach i trochę się w tym gubię.

No więc teraz mam mały problem jak narysować ten pocisk na scenie. Tak wygląda teraz plik cpp
C/C++
void Gracz::Klawisze() {
   
    perfectFrameTime = 1.f / 60;
    timeModifier = iterationTime.asSeconds() / perfectFrameTime;
    controlClock.restart();
    speed2 = 500;
    speed = 100;
   
   
    if( statek.getPosition().y >= 0 ) {;
        if( sf::Keyboard::isKeyPressed( sf::Keyboard::Up ) )
             statek.move( sf::Vector2f( 0, - 1 ) * speed2 * perfectFrameTime );
       
    }
    if( statek.getPosition().y <= 550 ) {
        if( sf::Keyboard::isKeyPressed( sf::Keyboard::Down ) )
             statek.move( sf::Vector2f( 0, 1 ) * speed2 * perfectFrameTime );
       
    }
    if( statek.getPosition().x >= 0 ) {
        if( sf::Keyboard::isKeyPressed( sf::Keyboard::Left ) )
             statek.move( sf::Vector2f( - 1, 0 ) * speed2 * perfectFrameTime );
       
    }
    if( statek.getPosition().x <= 748 ) {
        if( sf::Keyboard::isKeyPressed( sf::Keyboard::Right ) )
             statek.move( sf::Vector2f( 1, 0 ) * speed2 * perfectFrameTime );
       
    }
    bool strzal = false;
    if( sf::Keyboard::isKeyPressed( sf::Keyboard::Space ) ) {
        strzal = true;
    }
    if( strzal == true ) {
        int x = statek.getPosition().x;
        int y = statek.getPosition().y;
        Pocisk kulka( x, y );
       
    }
}
void Gracz::Pozycja( int x, int y ) {
    statek.setPosition( x, y );
}
Pocisk::Pocisk( int x, int y ) {
    kulka = CircleShape( 10 );
    kulka.setPosition( x, y );
    for( int i = 0; i < 750; i++ ) {
        kulka.move( sf::Vector2f( 0, 1 ) * speed * perfectFrameTime );
    }
}

void Pocisk::Rysuj( sf::RenderWindow & window )
{
    window.draw( kulka );
}

Pocisk::~Pocisk()
{
}
Czy mniej więcej o to chodzi?
P-142877
1 « 2 »
Poprzednia strona Strona 2 z 2