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: 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; } 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 ;( |
|
malan |
» 2011-04-23 16:58:35 Robisz pętlę zagnieżdżoną i jazda... 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? ;) |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2011-04-23 17:00:15 Tak, heh :) Chociaż...zaraz spr czy na pewno :) |
|
DejaVu |
» 2011-04-23 17:00:36 for( int i = 0; i < obiekty.size() - 1; i++ ) for( int j = i + 1; j < obiekty.size(); j++ ) sprawdzKolizje( obiekty[ i ], obiekty[ j ] ); |
|
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: 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ć? :) |
|
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 :) |
|
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. |
|
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 :) |
|
« 1 » 2 |