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

Pocisk zmienia kierunek lotu, mimo, ze bool zakazuje

Ostatnio zmodyfikowano 2010-04-24 00:15
Autor Wiadomość
dmx81
Temat założony przez niniejszego użytkownika
Pocisk zmienia kierunek lotu, mimo, ze bool zakazuje
» 2010-04-23 22:46:13
C/C++
class pocisk
{
    //...
};

pocisk * strzal = NULL;
std::vector < pocisk *> pociski;

if( key[ KEY_SPACE ] )
{
   
    strzal = new pocisk( karabin.x, karabin.y );
    strzal->obrazek = load_bmp( "1.bmp", default_palette );
    if( strzal->x > ludek.x && strzal->ustal_kierunek == true )
         strzal->kierunek =- 1;
    else if( karabin.x < ludek.x && strzal->ustal_kierunek == true )
         strzal->kierunek = 1;
   
    strzal->ustal_kierunek = false;
    pociski.push_back( strzal );
}
for( int i = 0; i < pociski.size(); i++ )
{
    pociski[ i ]->x += strzal->kierunek;
   
    if( pociski[ i ]->x > 1000 )
    {
        delete pociski[ i ];
        pociski.erase( pociski.begin() + i );
       
    }
    masked_blit( pociski[ i ]->obrazek, bufor, 0, 0, pociski[ i ]->x, pociski[ i ]->y, 2, 2 );
   
}

ilustracja problemu:

mam 2 bitmapy - ludek i karabin. jesli wcisne spacje, pojawia sie pocisk, ma leciec w prawo lub w lewo zaleznie od polozenia karabinu wzgledem ludka, zawsze w jego kierunku - to dziala w porzadku ale...

dalem niszczenie obiektow jesli wyleca w prawo za ekran, w lewo jeszcze nie dalem, no i zauwazylem, ze jesli wystrzele serie w ludka po lewej stronie, seria leci w lewo, ok, znika za krawedzia ekranu, przesuwam karabin, strzelam teraz w postac, ktora mam juz po prawej stronie, leci seria w prawo - ok... ale po chwili wraca ta seria poprzednia, wystrzelona w lewo, nagle leci w prawo...

albo inaczej... strzelam ogniem ciaglym zmieniajac pozycje karabinu wzgledem ludka, pociski leca albo w lewo albo w prawo, nawet te wystrzelone zmieniaja swoj kierunek jesli zmieni sie pozycja karabinu...

no a ja pytam, dlaczego, skoro dalem bool ustal kierunek, ustalam kierunek i daje ze ustal kierunek false i juz nie powinien sie zmieniac kierunek - tylko dla nowo utworzonych, ktore maja ustal kierunek true, a po ustaleniu ustawione na false...nie wiem co jest grane?
P-16325
DejaVu
» 2010-04-23 23:49:26
Każdy pocisk powinien mieć własny kierunek, a nie używać kierunku ludzika. Ludzik powinien służyć tylko i wyłącznie do zainicjalizowania początkowego kierunku pocisku.

/edit:
W skrócie poniższy wiersz Ci bruździ:
pociski[ i ]->x += strzal->kierunek;
Powinien on wyglądać tak:
C/C++
pociski[ i ]->x += pociski[ i ]->kierunek;
P-16326
dmx81
Temat założony przez niniejszego użytkownika
» 2010-04-24 00:15:12
oczywiscie taki mialem zamiar - aby kazdy pocisk mial swoj wlasny kierunek, nadawany w momencie tworzenia, ale jak widac, zle zapisalem :)

dziekuje za pokazanie mojego bledu, oczywiscie drobna glupota, a tak psuje, poprawilem jak podano - wiadomo, logiczne, ze tak wlasnie powinno byc :) dzieki za poswiecony czas, dziala jak nalezy, wiec chyba mozna zamknac? bo pewnie nikomu wiecej sie nie przyda
P-16327
« 1 »
  Strona 1 z 1