matiko101 Temat założony przez niniejszego użytkownika |
Prawo odbicia ALLEGRO » 2014-01-05 21:53:27 Witam, W jaki sposób udoskonalić moją grę (niedokończona), aby zachowane było prawo odbicia ? Jak wyglądał by taki wzór dostosowany do mojego kodu ? Już próbuję to zrobić od 3 dni ... #include <allegro.h> #include<cmath> int main() { int kierunek = 1; int uderzenie; int kat; allegro_init(); install_keyboard(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT, 1440, 900, 0, 0 ); clear_to_color( screen, makecol( 128, 128, 128 ) ); BITMAP * bufor = NULL; BITMAP * scianka1 = NULL; BITMAP * scianka2 = NULL; BITMAP * pilka = NULL; bufor = create_bitmap( 1440, 900 ); install_mouse(); scianka1 = load_bmp( "ludek.bmp", default_palette ); scianka2 = load_bmp( "ludek.bmp", default_palette ); pilka = load_bmp( "pilka.bmp", default_palette ); int scianka1_x = 0, scianka1_y = 450; int scianka2_x = 1390, scianka2_y = 450; double pilka_x = 0, pilka_y = 450; while( !key[ KEY_ESC ] ) { rest( 0.6 ); if( key[ KEY_UP ] && scianka1_y != 0 ) scianka1_y--; if( key[ KEY_DOWN ] && scianka1_y != 670 ) scianka1_y++; if( key[ KEY_W ] && scianka2_y != 0 ) scianka2_y--; if( key[ KEY_S ] && scianka2_y != 670 ) scianka2_y++; if(( kierunek == 1 && scianka2_x + pilka_x != 2780 ) ||( scianka1_x + pilka_x == 35 ) &&( pilka_y != 0 ) &&( pilka_y != 899 ) ) { pilka_x++; kat = pilka_y; kierunek = 1; } if(( kierunek == 2 && scianka1_x + pilka_x != 0 ) ||( scianka2_x + pilka_x == 2700 ) &&( pilka_y != 0 ) &&( pilka_y != 899 ) ) { kierunek = 2; pilka_x--; kat = pilka_y; } textprintf( screen, font, 20, 20, makecol( 255, 255, 128 ), "Kat to : %d", kat ); clear_to_color( bufor, makecol( 60, 10, 10 ) ); masked_blit( pilka, bufor, 0, 0, pilka_x, pilka_y, pilka->w, pilka->h ); masked_blit( scianka1, bufor, 0, 0, scianka1_x, scianka1_y, scianka1->w, scianka1->h ); masked_blit( scianka2, bufor, 0, 0, scianka2_x, scianka2_y, scianka2->w, scianka2->h ); blit( bufor, screen, 0, 0, 0, 0, 1440, 900 ); } destroy_bitmap( scianka1 ); destroy_bitmap( scianka2 ); destroy_bitmap( pilka ); destroy_bitmap( bufor ); allegro_exit(); return 0; } END_OF_MAIN();
|