hakr1921 Temat założony przez niniejszego użytkownika |
Problem ( szybkość obiektów ) » 2012-03-18 19:29:21 A więc zamierzam zrobić coś typu gra - Gonią Cię ludzie a ty uciekasz, dotkną Cię i padasz. Z kolizją problemów nie mam aczkolwiek chodzi o prędkość. W tutorialu wszystkie obiekty nabierają tej samej prędkości, próbowałem różnych sposób lecz nie udaje mi się, uczę się pierwszy dzień. Co zrobić by ludek i botek mieli inne prędkości? Muszę coś wymyśleć bo bot nie może być aż tak szybki.. poza tym zamierzam zrobić coś typu gra przetrwanie. Z góry dzięki za pomoc #include <allegro.h> int main() { allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0 ); BITMAP * bufor = NULL; BITMAP * ludek = NULL; BITMAP * botek = NULL; bufor = create_bitmap( 640, 480 ); ludek = load_bmp( "ludek.bmp", default_palette ); botek = load_bmp( "botek.bmp", default_palette ); int ludek_x = 100; int ludek_y = 100; int botek_x = 50; int botek_y = 50; while( !key[ KEY_ESC ] ) { { if( key[ KEY_F1 ] ) botek_x = 50, botek_y = 50; if( key[ KEY_LEFT ] ) ludek_x--; if( key[ KEY_RIGHT ] ) ludek_x++; if( key[ KEY_UP ] ) ludek_y--; if( key[ KEY_DOWN ] ) ludek_y++; if( ludek_x > botek_x ) botek_x++; if( ludek_x < botek_x ) botek_x--; if( ludek_y > botek_y ) botek_y++; if( ludek_y < botek_y ) botek_y--; } clear_to_color( bufor, makecol( 150, 150, 150 ) ); masked_blit( ludek, bufor, 0, 0, ludek_x, ludek_y, ludek->w, ludek->h ); masked_blit( botek, bufor, 0, 0, botek_x, botek_y, botek->w, botek->h ); blit( bufor, screen, 0, 0, 0, 0, 640, 480 ); } destroy_bitmap( botek ); destroy_bitmap( ludek ); destroy_bitmap( bufor ); allegro_exit(); return 0; } END_OF_MAIN();
Proszę o wyrozumiałość. |
|
SeaMonster131 |
» 2012-03-18 19:57:39 Najpierw naucz sie Kurs C++, a dopiero potem pisz gry, bez tego nie dasz sobie rady :) |
|
hakr1921 Temat założony przez niniejszego użytkownika |
» 2012-03-18 21:07:55 Ogólnie robię to i to. Lubie podejmować coś podczas nauki by widzieć tego efekty ;) |
|
SeaMonster131 |
» 2012-03-18 21:09:46 |
|
hincu |
» 2012-03-18 21:27:06 if( key[ KEY_LEFT ] ) ludek_x--;
if( key[ KEY_RIGHT ] ) ludek_x++;
if( key[ KEY_UP ] ) ludek_y--;
if( key[ KEY_DOWN ] ) ludek_y++;
if( ludek_x > botek_x ) botek_x++;
if( ludek_x < botek_x ) botek_x--;
if( ludek_y > botek_y ) botek_y++;
if( ludek_y < botek_y ) botek_y--;
powinno wygladac tak if( key[ KEY_LEFT ] ) ludek_x--;
else if( key[ KEY_RIGHT ] ) ludek_x++;
else if( key[ KEY_UP ] ) ludek_y--;
else if( key[ KEY_DOWN ] ) ludek_y++;
if( ludek_x > botek_x ) botek_x++;
else if( ludek_x < botek_x ) botek_x--;
if( ludek_y > botek_y ) botek_y++;
else if( ludek_y < botek_y ) botek_y--;
ale najpierw naucz sie podstaw bo bez tego nic nie zdzialasz, jesli chcesz aby bot nie biegal szybko to timery witaja |
|
hakr1921 Temat założony przez niniejszego użytkownika |
» 2012-03-18 22:06:34 @up Trochę nie rozumiem dlaczego ta zmiana, dzięki niej nie mogę poruszać się na ukos. Oczywiście jestem newbie w tej dziedzinie bo wiem że po dwóch dniach nauki niczego nie osiągnę ale wierze w siebie ;) Załatwiłem sprawę dodając double spid = 1.0;
Oraz if( ludek_x > botek_x ) botek_x++, botek_x += spid;
Oczywiście to tylko przykład ;) |
|
hincu |
» 2012-03-18 22:13:58 nie mozesz poruszac sie na ukos bo ify ktore tam sa sprawdzane sa raz w obiegu petli a w twoim kodzie byly sprawdzane wszystkie po kolei, zreszta sprawdz jak dziala if oraz else if |
|
« 1 » |