xevuel |
» 2012-04-06 10:35:20 Aj, faktycznie, przeoczyłem tą linijkę: install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) ); A co do średników, to chodziło mi o to, że on podstaw nie zna, bo są one tam niepotrzebne. Ja wiem, że można dać ich 1000, ale po co? Jak poprawiałem ten jego kod to to były błędy składniowe - nie logiczne. @cichy: Wywołuje ci się w ogóle funkcja kolizja()? Jak nie, to znaczy że jednak jest coś z tą zmienną speed. |
|
cichy Temat założony przez niniejszego użytkownika |
» 2012-04-07 12:58:56 Nie wywołuje mi się właśnie kolizja ale przeniosłem funkcję spawn() do tego miejsce ze zmienną speed i działa. Dlatego to raczej błędy z wywołaniem funkcji kolizja(). |
|
cichy Temat założony przez niniejszego użytkownika |
» 2012-04-09 12:55:38 Funkcja kolizja() jednak się wywołuje ale nie zwraca błędu. Nie działają zależności np.: 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--; } }
Wstawiam cały kod jakby komuś się chciało kompilować: #include <allegro.h> #include <ctime> #include <iostream>
void 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--; } } 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++; } } 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--; } } } 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++; } } }
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 ); install_timer(); install_keyboard(); 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 ); } }
//SeaMonster131: Kurs STC |
|
1 2 « 3 » |