cichy Temat założony przez niniejszego użytkownika |
» 2012-04-05 19:58:12 dzięki pomogło to z nawiasem w funkcji ale wyskakuje mi dziwny błąd: install_timer(); install_keyboard(); install_mouse(); a błędy: expected constructor, destructor, or type conversion before ';' token
i tak do każdego z tych. |
|
xevuel |
» 2012-04-05 20:09:54 Po 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; };
usuń średnik. Co do tych funkcji: Chcesz je wywołać poza żadną inną funkcją? Wstaw je do main(), czy gdzie tam one są ci potrzebne. |
|
cichy Temat założony przez niniejszego użytkownika |
» 2012-04-05 20:56:20 Tą właśnie usunąłem a funckcję tą drógą wywołuje właśnie w main tylko problem jest z tymi instalacjami. |
|
xevuel |
» 2012-04-05 20:59:41 te 'instalacje' są wywoływane poza żadną funkcją, i to o nich mówię.
No chyba że zmieniłeś kod, pokaż aktualny... |
|
cichy Temat założony przez niniejszego użytkownika |
» 2012-04-05 22:45:17 program działa ale funkcja już nie. nie ma błędu ale nie ma reakcji na klawisze #include <allegro.h> #include <ctime> #include <iostream>
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; } } }
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;
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 ); } 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 ); } install_timer(); install_keyboard(); install_mouse(); }
|
|
xevuel |
» 2012-04-06 08:59:17 Przecież masz volatile long speed = 0; , a potem warunek while( speed > 0 ) . Ja ci radzę, powtórz sobie podstawy, bo w większości przypadków nikomu nie będzie się chciało kompilować kodu, żeby znaleźć ci błędy. Te, które popełniasz, nie wynikają z braku znajomości allegro, ale z braku znajomości podstaw (jak np. średnik po if-ie). |
|
RazzorFlame |
» 2012-04-06 09:40:06 Tak poza tym: int depth, res;
res = set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
Czyzby struktura BITMAP była int'em? Edit: Heh sorry jednak to ja sie pomylilem. Tak dawno nie robilem w allegro ze juz zapomnialem ze tego sie nie robi podobnie jak w SDL("SDL_Surface screen = SDL_SetVideoMode(...);"). |
|
SeaMonster131 |
» 2012-04-06 10:07:05 @xevuel: Ale żeś sie uczepił. Prosze bardzo: Timery, a dokładniej dla Ciebie: volatile long speed = 0; void increment_speed() { speed++; } END_OF_FUNCTION( increment_speed );
while( speed > 0 ) { speed--; }
Więc o co Ci chodzi, jak tak jest w kursie ? Chyba, że kurs jest źle napisany - to przepraszam. Tak samo przyczepiłeś sie do średników po if'ach - co za różnica gdzie sobie średnik walne (ale zachowując poprawność kodu) ? Moge nawet sobie dać ich i tysiąc i program będzie pracować tak samo. Trzeba zawsze najpierw sprawdzić swoje informacje :) |
|
1 « 2 » 3 |