Jak robi się DESTRUKTOR??
Ostatnio zmodyfikowano 2013-03-03 19:52
ziajek444 Temat założony przez niniejszego użytkownika |
Jak robi się DESTRUKTOR?? » 2013-03-03 19:39:04 Udało mi się zrobić żeby tworzyć nowe obiekty (to ma symulować pociski) tylko że zrobilem to w taki sposób że jak "wystrzelę" więcej to zwalnia program i choć ich nie ma na ekranie to dalej się rysują poza mapą. Stwierdzam więc że potrzebuje je usuwać jak wyjdą poza ekran. Jak to zrobić? #include <allegro.h> BITMAP * bufer; class obiekt { private: int poz_x; int poz_y; public: void zapisz( int, int ); void wyswietl(); int getpoz(); };
void obiekt::zapisz( int a, int b ) { poz_x = a; poz_y = b; };
void obiekt::wyswietl() { poz_x += 10; circle( bufer, poz_x, poz_y, 30, makecol( 255, 255, 255 ) ); rest( 1 ); };
int obiekt::getpoz() { return poz_x; };
int main() { obiekt dodaj[ 1000 ]; obiekt * wsk; allegro_init(); install_keyboard(); install_mouse(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 700, 0, 0 ); bufer = create_bitmap( 640, 700 ); clear_to_color( bufer, 0x333333 ); BITMAP * obiekt2 = create_bitmap( 640, 700 ); clear_to_color( obiekt2, 1 ); BITMAP * add = create_bitmap( 640, 700 ); clear_to_color( add, makecol( 255, 255, 255 ) ); int x = 0; int pom = 0; int px = 200; int py = 200; show_mouse( screen ); while( !key[ KEY_ESC ] ) { if( key[ KEY_A ] ) { rest( 100 ); dodaj[ x ].zapisz( px, py ); x++; } pom = x; clear_to_color( bufer, 0x333333 ); for( int i = x; i >= 0; i-- ) { dodaj[ x ].wyswietl(); x--; } blit( bufer, screen, 0, 0, 0, 0, 640, 700 ); x = pom; } readkey(); destroy_bitmap( bufer ); destroy_bitmap( obiekt2 ); destroy_bitmap( add ); return 0; } END_OF_MAIN();
|
|
SeaMonster131 |
» 2013-03-03 19:41:43 To albo nie rysuj pocisków niewidocznych na ekranie albo skorzystaj z np vector |
|
ziajek444 Temat założony przez niniejszego użytkownika |
» 2013-03-03 19:52:27 Dobra udało mi się, dodałem takie coś if(dodaj[x].getpoz()<640) dodaj[x].wyswietl(); zamiast dodaj[x].wyswietl(); czyli jak przekroczy screen to nie rysuje. Ale mam inny problem jak zrobić żeby jak nacisnę 'a' to żeby mi wykonywało x++; tylko raz nie ważne jak długo trzymam wciśnięte 'a' i żeby dodało znowu jak nacisnę znowu 'a'; (Albo chociaż trochę opóźnić, ale nie wstrzymując pętli programu) Aktualizacja 03-03-2013 20:30 Poprawiłem płynność kodu ale dalej kulki nawalają jak z karabinu a nie strzelby Aktualizacja 03-03-2013 21:08 OK mam. if( !key[ KEY_A ] ) press = true;
if( press == true ) { if( key[ KEY_A ] ) { x++; dodaj[ x ].zapisz( mouse_x, mouse_y ); press = false; } } Dzięki za próbę SeaMonster131, A tak na marginesie, to zrobił byś dalej te poradniki na yt. |
|
« 1 » |