maciek1316 Temat założony przez niniejszego użytkownika |
[Allegro] Jak zrobić menu » 2008-05-13 17:06:04 Pewnie znowu zrobiłem jakąś głupotę... Przeczytałem w jednym temacie o robieniu Menu. Wsadziłem gre ( trudno to grą nazwać:p) w klase. I nie działa... Czy mógł by ktoś zerknąć na kodzik? Kto pyta nie błądzi ;) #include <allegro.h> #include <iostream> #include <conio.h>
void uruchom_gre() { int x = 250, y = 150; int x1 = 250, y1 = 550; int a; a = 1; bool kolizja = false; BITMAP * tlo = NULL; BITMAP * bufor = NULL; BITMAP * koniec = NULL; tlo = load_bmp( "tlo.bmp", default_palette ); bufor = create_bitmap( 800, 600 ); koniec = load_bmp( "koniec.bmp", default_palette ); for(;; ) { if(( key[ KEY_UP ] ) &&( x > 20 ) ) x = x - 2; if(( key[ KEY_DOWN ] ) &&( x < 780 ) ) x = x + 2; if(( key[ KEY_LEFT ] ) &&( y > 20 ) ) y = y - 2; if(( key[ KEY_RIGHT ] ) &&( y < 780 ) ) y = y + 2; if( key[ KEY_W ] ) x1--; if( key[ KEY_S ] ) x1++; if( key[ KEY_A ] ) y1--; if( key[ KEY_D ] ) y1++; clear_to_color( bufor, makecol( 46, 54, 140 ) ); blit( tlo, bufor, 0, 0, 0, 0, tlo->w, tlo->h ); rectfill( bufor, y1, x1, y1 + 50, x1 + 50, makecol( 0, 0, 0 ) ); rectfill( bufor, y, x, y + 50, x + 50, makecol( 255, 255, 255 ) ); if(( x == x1 + 50 ) &&( y <= y1 + 50 ) &&( y + 50 >= y1 ) ) kolizja = true; if(( x + 50 == x1 ) &&( y <= y1 + 50 ) &&( y + 50 >= y1 ) ) kolizja = true; if(( y + 50 == y1 ) &&( x <= x1 + 50 ) &&( x + 50 >= x1 ) ) kolizja = true; if(( y == y1 + 50 ) &&( x <= x1 + 50 ) &&( x + 50 >= x1 ) ) kolizja = true; if( kolizja = true ) break; blit( bufor, screen, 0, 0, 0, 0, 800, 600 ); destroy_bitmap( tlo ); destroy_bitmap( bufor ); blit( koniec, screen, 0, 0, 300, 200, 300, 200 ); } }; int main() { allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); clear_to_color( screen, makecol( 46, 54, 140 ) ); if( key[ KEY_Q ] ) { uruchom_gre(); } while( !key[ KEY_ESC ] ); readkey(); allegro_exit(); return( 0 ); }
END_OF_MAIN();
|
|
DejaVu |
Szkielet programu dla gier w allegro z obsługą menu » 2008-05-13 17:46:10 [tutorial] Szkielet programu dla gier w allegro z obsługą menu#include <allegro.h> void ObslugaGry( BITMAP * bufor, int maxX, int maxY ) { do { clear_to_color( bufor, makecol( 0, 0, 0 ) ); blit( bufor, screen, 0, 0, 0, 0, maxX, maxY ); } while( !key[ KEY_ESC ] ); }
void ObslugaMenu( BITMAP * bufor, int maxX, int maxY ) { do { if( key[ KEY_S ] ) ObslugaGry( bufor, maxX, maxY ); clear_to_color( bufor, makecol( 0, 0, 0 ) ); blit( bufor, screen, 0, 0, 0, 0, maxX, maxY ); } while( !key[ KEY_Q ] ); }
int main() { allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); BITMAP * bufor = create_bitmap( 800, 600 ); if( bufor ) { ObslugaMenu( bufor, 800, 600 ); destroy_bitmap( bufor ); } else allegro_message( "Nie udało się utworzyć bufora obrazu!" ); allegro_exit(); return( 0 ); }
END_OF_MAIN();
[/tutorial] |
|
maciek1316 Temat założony przez niniejszego użytkownika |
» 2008-05-14 18:14:03 Co wpisać w zakończenie?? po czym takim mi błąd wyskakuje. |
|
DejaVu |
» 2008-05-14 23:34:21 Jeśli funkcja zwraca wartość, to return musi ją zwracać. W Twoim przypadku żadna wartość nie jest zwracana i może pokazywać Ci błąd. Jak dostajesz błędy to oprócz kodu wklejaj log kompilacji. |
|
maciek1316 Temat założony przez niniejszego użytkownika |
» 2008-05-15 17:23:44 Już wiem co pomieszałem:D wsadziłem return(0); do funkcji, teraz już wszystko działa . Dzięki |
|
« 1 » |