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

[C++] Klasy...

Ostatnio zmodyfikowano 2011-04-23 21:09
Autor Wiadomość
SeaMonster131
Temat założony przez niniejszego użytkownika
[C++] Klasy...
» 2011-04-23 16:52:40
Witam, to znów ja :)
Przejde na początku do kodu:
C/C++
class Object
{
private:
    float x, y;
    bool spr_wys;
   
public:
    void Render( int, int,...);
};

//...

void Object::Render( int x, int y,...)
{
    if( spr_wys )
    {
        Object::x = x; Object::y = y;
        spr_wys = false;
    }
    //tutaj sobie wyświetlam ten obiekt
   
    if( Object::y != Object::y ) //???
    {
        Object::y++;
    }
}

To tak.. Jakby to napisać...po prostu chcę aby renderowany obiekt (obiekt.Render()) kiedy nie napotka innego renderowanego obiektu (np obiekt2.Render()) spadał na dół.
Ze spadaniem nie mam akurat problemu, ale jak napisać kolizję z każdym obiektem? Bo może być np 50 różnych obiektów... Czy jest to tak wg możliwe?
Mam nadzieję, że mnie rozumiecie :) Jakoś nie moge dojść do tego ;(
P-31766
malan
» 2011-04-23 16:58:35
Robisz pętlę zagnieżdżoną i jazda...
C/C++
for( std::size_t i = 0; i < objects.size(); ++i )
{
    for( std::size_t j = 0; j < objects.size(); ++j )
    {
        if( objects[ i ].collision( objects[ j ] )
        objects[ i ].fall();
    }
}
Tylko trochę to nie wydajne, co nie? ;)
P-31768
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2011-04-23 17:00:15
Tak, heh :) Chociaż...zaraz spr czy na pewno :)
P-31769
DejaVu
» 2011-04-23 17:00:36
C/C++
for( int i = 0; i < obiekty.size() - 1; i++ )
for( int j = i + 1; j < obiekty.size(); j++ )
     sprawdzKolizje( obiekty[ i ], obiekty[ j ] );
P-31770
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2011-04-23 17:07:09
Ja tak chyba nie mogę zrobić, ja to chciałbym umieścić w funkcji:

C/C++
void Object::Render( int x, int y, int scalx, int scaly )
{
    if( spr_wys )
    {
        Object::x = x; Object::y = y;
        spr_wys = false;
    }
    al_draw_scaled_bitmap( img, 0, 0, szer, wys, Object::x, Object::y, scalx, scaly, 0 );
   
    if( Object::y < 600 -( scaly + 1 ) &&
    Object::y != Object::y ) // ...
    {
        Object::Fciezkosci +=( Object::weight / 10 );
        Object::y +=( Object::weight / 20 ) +( Object::Fciezkosci / 10 );
    }
}

Tutaj jest cały kod tej funkcji. Chciałbym spr czy zaszła kolizja w tej funkcji ?
Dlatego nie wiem czy wg da sie tak to zrobić? :)
P-31774
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2011-04-23 17:49:32
Dobra, nikt nie odp to chyba tak sie nie da :D Ale jakby ktoś miał jeszcze jakiś pomysł to niech pisze. Ja zastosuje te 2 pętle for :)
P-31781
Dawidsoni
» 2011-04-23 17:52:33
Chodzi ci o to, że masz x obiektów i chcesz sprawdzić, czy między obiektem, który spada, a pozostałymi zaszła kolizja? Jeśli tak, to za każdym ruchem w dół tego obiektu jednocześnie musisz sprawdzić, czy zaszła kolizja z pozostałymi. Czyli zrobić pętle w pętli.
P-31783
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2011-04-23 17:56:12
Tak, to właśnie chce zrobić :) Tylko jak to wcisnąć do funkcji? :p

Bo np mam tak:
Object pudlo[10], kolo[7], rower[20], pc[300];

i teraz chciałbym aby z każdym z tym obiektów zachodziła kolizja :)
P-31787
« 1 » 2
  Strona 1 z 2 Następna strona