Tombol Temat założony przez niniejszego użytkownika |
[Allegro] ISO C++ forbids comparison between pointer and integer » 2008-10-01 17:50:26 No cóż 1 problem 1 temat a więc mam taki problem. Wyświetla mi się taki błąd jak w topicu niestety szukałem w Google i wszędzie i nie wiem dalej co zrobić :/ #include <allegro.h> #include<iostream> volatile long speed = 0; void increment_speed() { speed++; } END_OF_FUNCTION( increment_speed ); LOCK_VARIABLE( speed ); LOCK_FUNCTION( increment_speed ); int statek_x = 500, statek_y = 440; int pocisk_x = statek_x, pocisk_y = 440;
bool kolizja( void ) { if( statek_x > 600 ) return true; if( statek_x < 10 ) return true; }
int main() { allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 ); clear_to_color( screen, makecol( 0, 0, 0 ) ); install_timer(); install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) ); BITMAP * statek = NULL; BITMAP * pocisk = NULL; BITMAP * bufor = NULL; bufor = create_bitmap( 640, 480 ); if( !bufor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogę utworzyć bufora !" ); allegro_exit(); return 0; } statek = load_bmp( "statek.bmp", default_palette ); if( !statek ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "nie mogę załadować obrazka statek!" ); allegro_exit(); return 0; } pocisk = load_bmp( "pocisk.bmp", default_palette ); if( !pocisk ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "nie mogę załadować obrazka pocisk!" ); allegro_exit(); return 0; } while( !key[ KEY_ESC ] ) { if( key[ KEY_LEFT ] ) { statek_x--; if( kolizja == true ) { statek_x++; } } if( key[ KEY_RIGHT ] ) { statek_x++; if( kolizja == true ) { statek_x--; } } if( key[ KEY_A ] ) pocisk_y++; speed--; masked_blit( statek, bufor, 0, 0, statek_x, statek_y, statek->w, statek->h ); masked_blit( pocisk, bufor, 0, 0, pocisk_x, pocisk_y, pocisk->w, pocisk->h ); blit( bufor, screen, 0, 0, 0, 0, 640, 480 ); } remove_int( increment_speed ); destroy_bitmap( statek ); destroy_bitmap( pocisk ); destroy_bitmap( bufor ); allegro_exit(); return 0; } END_OF_MAIN();
Po zaznaczałem miejsca w których jest błąd a gwiazdami to co podejrzewam że nie działa :/ |
|
DejaVu |
» 2008-10-01 19:20:20 kolizja jest funkcją, a nie zmienną. Funkcję się wywołuje tak: kolizja() Gdy dla funkcji użyjesz zapisu: kolizja oznacza to, że interesuje Ciebie jej adres, a nie wywoływanie jej. W konsekwencji kompilator pokazuje Ci, błąd: " standard ISO C++ zabrania wykonywania porównań pomiędzy typem wskaźnikowym, a typem liczbowym.". Wartości true/ false są defacto liczbami, a kolizja jak już wcześniej wspomniałem wskaźnikiem do funkcji. |
|
lynx |
» 2008-10-01 19:25:15 A ja bym jeszcze dodał na samym końcu funkcji kolizja instrukcję return false; |
|
Tombol Temat założony przez niniejszego użytkownika |
» 2008-10-01 20:50:39 Świetnie wielkie thx statek już nie może poza ekran wyjechać xD |
|
« 1 » |