cichy Temat założony przez niniejszego użytkownika |
Kolizje w allegro C++ » 2012-04-04 22:20:29 Mam taką funkcję lecz niestety wyskakuje mi błąd. bool kolizja( int kolo_x, int kolo_y, int kolo_s, int kolo_h, int kwadrat_x, int kwadrat_y, int kwadrat_s, int kwadrat_h ) { if(( kwadrat_y + kwadrat_h - 1 ) < kolo_y or kolo_x >( kwadrat_x + kwadrat_s ) or( kolo_y + kolo_h - 1 ) < kwadrat_y or kolo_x >( kwadrat_x + kwadrat_s + 1 ) ) { if( kolo_x > 0 ) { if( key[ KEY_A ] ) kolo_x--; return false; } } if(( kolo_x + 24 ) < 640 ) { if(( kwadrat_y + kwadrat_h - 1 ) < kolo_y or kolo_x + kolo_s < kwadrat_x or kolo_y + kolo_h - 1 < kwadrat_y or kolo_y + kolo_s > kwadrat_x or kolo_x > kwadrat_x + kwadrat_s - 1 ) { if( key[ KEY_D ] ) kolo_x++; return false; } } if(( kolo_x + kolo_s - 1 ) < kwadrat_x or kolo_x >( kwadrat_x + kwadrat_s - 1 ) or kolo_y >( kwadrat_y + kwadrat_h ) or kolo_y + kolo_h - 1 < kwadrat_y ) { if( kolo_y > 0 ) { if( key[ KEY_W ] ) { kolo_y--; return false; } } } if(( kolo_y + 25 ) < 480 ) { if( kolo_x + kolo_s - 1 < kwadrat_x or kolo_x > kwadrat_x + kwadrat_s - 1 or kolo_y + kolo_h < kwadrat_y or kolo_y > kwadrat_y + kwadrat_h - 1 ) { if( key[ KEY_S ] ) kolo_y++; return false; } } };
Jeśli ktoś wie co jest tego przyczyna to proszę o pomoc/ |
|
Chlorek |
» 2012-04-04 22:54:37 Może podasz ten błąd - treść. Może i jestem leniwy, ale raczej mało kto teraz będzie próbował to kompilować. A tak podanie błędu == szybka odpowiedź. |
|
cichy Temat założony przez niniejszego użytkownika |
» 2012-04-04 22:57:14 w sumie to racja nie pomyślałem :) a function-definition is not allowed here before '{' token expected `,' or `;' before '{' token |
|
hincu |
» 2012-04-05 12:04:08 klamra zamykajaca funkcje posiada srednik w funkcjach nie stosuje sie srednikow |
|
cichy Temat założony przez niniejszego użytkownika |
» 2012-04-05 12:55:57 bez średnika reakcja taka sama. a z tym średnikiem to eksperymentowałem i nie usunąłem |
|
xevuel |
» 2012-04-05 13:56:06 Podaj linijkę, którą IDE ci zaznacza jako błędną.
Nie wiem, przejrzałem ten kod, i nie znalazłem błędu, to z ciekawości skompilowałem go. I TDM-GCC skompilował go bez błędów. Jesteś pewny, że to ta funkcja powoduje błąd? |
|
cichy Temat założony przez niniejszego użytkownika |
» 2012-04-05 18:39:51 3 linijka w tym co tutaj pisze a dokładniej to klamra otwierająca funkcję w sumie to nie mam 100% pewności.jakby się komuś strasznie nudziło :D wstawiam tutaj cały kod #include <allegro.h> #include <ctime> #include <iostream>
int kolo_x = 100; int kolo_y = 100; int kolo_s = 24; int kolo_h = 25;
int kwadrat_x = 200; int kwadrat_y = 100; int kwadrat_s = 70; int kwadrat_h = 70;
volatile long speed = 0;
bool kolizja( int x1, int y1, int s1, int w1, int x2, int y2, int s2, int w2 ) { if( x2 <= x1 + s1 && x2 > x1 && y2 >= y1 && y2 <= y1 + w1 ) return true; else if( x2 <= x1 + s1 && x2 > x1 && y2 + w2 >= y1 && y2 + w2 <= y1 + w1 ) return true; else if( x2 + s2 <= x1 + s1 && x2 + s2 > x1 && y2 >= y1 && y2 <= y1 + w1 ) return true; else if( x2 + s2 <= x1 + s1 && x2 + s2 > x1 && y2 + w2 >= y1 && y2 + w2 <= y1 + w1 ) return true; else return false; };
void increment_speed() { speed++; } END_OF_FUNCTION( increment_speed );
void spawn() { kolo_x = 10; kolo_y = 10; } END_OF_FUNCTION( spawn );
void init(); void spawn();
LOCK_VARIABLE( speed ); LOCK_FUNCTION( increment_speed );
int main() { init(); install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) ); BITMAP * kolo = NULL; BITMAP * bufor = NULL; BITMAP * kwadrat = NULL; kolo = create_bitmap( 24, 25 ); bufor = create_bitmap( 640, 480 ); kwadrat = create_bitmap( kwadrat_s, kwadrat_h ); kolo = load_bmp( "kolo.bmp", default_palette ); kwadrat = load_bmp( "kwadrat.bmp", default_palette ); while( !key[ KEY_ESC ] ) { if( key[ KEY_R ] ) { spawn(); } while( speed > 0 ) { kolizja( kolo_x, kolo_y, kolo_s, kolo_h, kwadrat_x, kwadrat_y, kwadrat_s, kwadrat_h ); speed--; } blit( bufor, screen, 0, 0, 0, 0, bufor->w, bufor->h ); clear_to_color( bufor, makecol( 55, 45, 147 ) ); masked_blit( kolo, bufor, 0, 0, kolo_x, kolo_y, kolo->w, kolo->h ); masked_blit( kwadrat, bufor, 0, 0, kwadrat_x, kwadrat_y, kwadrat->w, kwadrat->h ); masked_blit( kwadrat, bufor, 0, 0, 100, 100, kwadrat->w, kwadrat->h ); } remove_int( increment_speed ); destroy_bitmap( kolo ); destroy_bitmap( bufor ); destroy_bitmap( kwadrat ); return 0; } END_OF_MAIN()
void init() { int depth, res; allegro_init(); depth = desktop_color_depth(); if( depth == 0 ) depth = 32; set_color_depth( depth ); res = set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 ); if( res != 0 ) { allegro_message( allegro_error ); exit( - 1 ); }; bool kolizja( int kolo_x, int kolo_y, int kolo_s, int kolo_h, int kwadrat_x, int kwadrat_y, int kwadrat_s, int kwadrat_h ) { if(( kwadrat_y + kwadrat_h - 1 ) < kolo_y or kolo_x >( kwadrat_x + kwadrat_s ) or( kolo_y + kolo_h - 1 ) < kwadrat_y or kolo_x >( kwadrat_x + kwadrat_s + 1 ) ) { if( kolo_x > 0 ) { if( key[ KEY_A ] ) kolo_x--; return false; } } if(( kolo_x + 24 ) < 640 ) { if(( kwadrat_y + kwadrat_h - 1 ) < kolo_y or kolo_x + kolo_s < kwadrat_x or kolo_y + kolo_h - 1 < kwadrat_y or kolo_y + kolo_s > kwadrat_x or kolo_x > kwadrat_x + kwadrat_s - 1 ) { if( key[ KEY_D ] ) kolo_x++; return false; } } if(( kolo_x + kolo_s - 1 ) < kwadrat_x or kolo_x >( kwadrat_x + kwadrat_s - 1 ) or kolo_y >( kwadrat_y + kwadrat_h ) or kolo_y + kolo_h - 1 < kwadrat_y ) { if( kolo_y > 0 ) { if( key[ KEY_W ] ) { kolo_y--; return false; } } } if(( kolo_y + 25 ) < 480 ) { if( kolo_x + kolo_s - 1 < kwadrat_x or kolo_x > kwadrat_x + kwadrat_s - 1 or kolo_y + kolo_h < kwadrat_y or kolo_y > kwadrat_y + kwadrat_h - 1 ) { if( key[ KEY_S ] ) kolo_y++; return false; } } } install_timer(); install_keyboard(); install_mouse(); } |
|
xevuel |
» 2012-04-05 19:41:57 Czyli tak: Po END_OF_MAIN() nie masz średnika, jest to linijka przed void init(). if( res != 0 ) { allegro_message( allegro_error ); exit( - 1 ); };
Po if-ach nie stawiamy średników. void init() { int depth, res; allegro_init(); depth = desktop_color_depth(); if( depth == 0 ) depth = 32; set_color_depth( depth ); res = set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 ); if( res != 0 ) { allegro_message( allegro_error ); exit( - 1 ); };
Brak nawiasu kończącego funkcję. PS. Kolorowanie składni języka C++ |
|
« 1 » 2 3 |