krakers Temat założony przez niniejszego użytkownika |
funkcja al_flip_display(); » 2015-03-22 20:26:22 Mam kilka pytań dotyczących powyższej funkcji: 1.) Co ona robi ? 2.) Jaka powinna być kolejność jej występowania względem wykonywanych obliczeń (pętli) ? (gdy kolejność jest: prymitywy_1, al_flip_display();, obliczenia, prymitywy_2 - to te ostatni prymitywy nie działają, a gdy dam na początku jedne prymitywy, potem obliczenia, następnie kolejne prymitywy, oraz na koniec al_flip_display(); - to cały program nie działa) |
|
pekfos |
» 2015-03-22 20:26:57 |
|
krakers Temat założony przez niniejszego użytkownika |
» 2015-03-22 20:32:32 Rozumiem już co ona robi. Nie wiesz może jaka powinna być prawidłowa kolejność ? |
|
pekfos |
» 2015-03-22 20:41:33 Wywołujesz po wyświetleniu wszystkiego. |
|
krakers Temat założony przez niniejszego użytkownika |
» 2015-03-22 20:46:36 Dając na koniec też nic się nie pojawia, czyli coś w srodku programu przetrzymuje. |
|
pekfos |
» 2015-03-22 20:50:06 Kod..? |
|
krakers Temat założony przez niniejszego użytkownika |
» 2015-03-22 20:55:42 #include <allegro5/allegro.h> #include <allegro5/allegro_primitives.h> #include <iostream> #include <fstream> #include <time.h> #include <cstdlib>
using namespace std;
void rysuj_plac_gry( int x, int y ) { int i; for( i = 0; i <= x; i++ ) al_draw_line( 20 + i * 10, 20, 20 + i * 10, 20 + y * 10, al_map_rgba( 0, 255, 0, 128 ), 1 ); for( i = 0; i <= y; i++ ) al_draw_line( 20, 20 + i * 10, 20 + x * 10, 20 + i * 10, al_map_rgba( 0, 255, 0, 128 ), 1 ); for( i = 0; i <= x; i++ ) al_draw_line( 50 + i * 10 + 10 * x, 20, 50 + i * 10 + 10 * x, 20 + y * 10, al_map_rgba( 0, 255, 0, 128 ), 1 ); for( i = 0; i <= y; i++ ) al_draw_line( 50 + x * 10, 20 + i * 10, 50 + x * 10 + x * 10, 20 + i * 10, al_map_rgba( 0, 255, 0, 128 ), 1 ); } void wait( int seconds ) { clock_t endwait; endwait = clock() + seconds * CLOCKS_PER_SEC; while( clock() < endwait ) { } }
int main() { int w = 0; int x = 11; int y = 11; int losowanie[ x ][ y ]; int statki_gracza[ x ][ y ]; int statki_komputera[ x ][ y ]; int ruchy_gracza[ x ][ y ]; int ruchy_komputera[ x ][ y ]; int i, j, k, nie_zatopil; int a[ 8 ]; al_init(); al_init_primitives_addon(); al_install_keyboard(); ALLEGRO_KEYBOARD_STATE klawiatura; al_set_new_display_flags( ALLEGRO_WINDOWED ); ALLEGRO_DISPLAY * okno = al_create_display( 400, 300 ); al_set_window_title( okno, "Allegro5 - Prymitywy" ); ALLEGRO_EVENT_QUEUE * kolejka = al_create_event_queue(); al_register_event_source( kolejka, al_get_display_event_source( okno ) ); ALLEGRO_EVENT zdarzenie; while( w == 0 ) { al_get_next_event( kolejka, & zdarzenie ); if( zdarzenie.type == ALLEGRO_EVENT_DISPLAY_CLOSE ) { return 0; } al_get_keyboard_state( & klawiatura ); al_clear_to_color( al_map_rgb( 150, 150, 150 ) ); rysuj_plac_gry( x, y ); for( i = 0; i < x; i++ ) for( i = 0; j < y; j++ ) { losowanie[ i ][ j ] = 1; statki_komputera[ i ][ j ] = 0; statki_gracza[ i ][ j ] = 0; ruchy_gracza[ x ][ y ] = 1; ruchy_komputera[ x ][ y ] = 1; } srand( time( NULL ) ); for( k = 0; k < 3; k++ ) { i = 0; while( i = 0 ) { a[ 0 ] = rand() % x; a[ 1 ] = rand() % y; if( losowanie[ a[ 0 ] ][ a[ 1 ] ] == 1 ) { i = 1; statki_komputera[ a[ 0 ] ][ a[ 1 ] ] = 1; losowanie[ a[ 0 ] ][ a[ 1 ] ] = 0; a[ 2 ] = rand() % x; a[ 3 ] = rand() % y; while(( a[ 0 ] - a[ 2 ] ) *( a[ 0 ] - a[ 2 ] ) +( a[ 1 ] - a[ 3 ] ) *( a[ 1 ] - a[ 3 ] ) != 1 || losowanie[ a[ 2 ] ][ a[ 3 ] ] == 0 ) { a[ 2 ] = rand() % x; a[ 3 ] = rand() % y; } statki_komputera[ a[ 2 ] ][ a[ 3 ] ] = 1; losowanie[ a[ 2 ] ][ a[ 3 ] ] = 0; a[ 4 ] = rand() % x; a[ 5 ] = rand() % y; while((( a[ 4 ] - a[ 2 ] ) *( a[ 4 ] - a[ 2 ] ) +( a[ 5 ] - a[ 3 ] ) *( a[ 5 ] - a[ 3 ] ) != 1 || losowanie[ a[ 4 ] ][ a[ 5 ] ] == 0 ) ||(( a[ 0 ] - a[ 4 ] ) *( a[ 0 ] - a[ 4 ] ) +( a[ 1 ] - a[ 5 ] ) *( a[ 1 ] - a[ 5 ] ) != 1 || losowanie[ a[ 4 ] ][ a[ 5 ] ] == 0 ) ) { a[ 4 ] = rand() % x; a[ 5 ] = rand() % y; } statki_komputera[ a[ 4 ] ][ a[ 5 ] ] = 1; losowanie[ a[ 4 ] ][ a[ 5 ] ] = 0; a[ 6 ] = rand() % x; a[ 7 ] = rand() % y; while((( a[ 6 ] - a[ 0 ] ) *( a[ 6 ] - a[ 0 ] ) +( a[ 7 ] - a[ 1 ] ) *( a[ 7 ] - a[ 1 ] ) != 1 || losowanie[ a[ 6 ] ][ a[ 7 ] ] == 0 ) ||(( a[ 6 ] - a[ 2 ] ) *( a[ 6 ] - a[ 2 ] ) +( a[ 7 ] - a[ 3 ] ) *( a[ 7 ] - a[ 3 ] ) != 1 || losowanie[ a[ 6 ] ][ a[ 7 ] ] == 0 ) ||(( a[ 6 ] - a[ 4 ] ) *( a[ 6 ] - a[ 4 ] ) +( a[ 7 ] - a[ 5 ] ) *( a[ 7 ] - a[ 5 ] ) != 1 || losowanie[ a[ 6 ] ][ a[ 7 ] ] == 0 ) ) { a[ 6 ] = rand() % x; a[ 7 ] = rand() % y; } statki_komputera[ a[ 6 ] ][ a[ 7 ] ] = 1; losowanie[ a[ 6 ] ][ a[ 7 ] ] = 0; } } } for( k = 0; k < 4; k++ ) { i = 0; while( i = 0 ) { a[ 0 ] = rand() % x; a[ 1 ] = rand() % y; if( losowanie[ a[ 0 ] ][ a[ 1 ] ] == 1 ) { i = 1; statki_komputera[ a[ 0 ] ][ a[ 1 ] ] = 1; losowanie[ a[ 0 ] ][ a[ 1 ] ] = 0; a[ 2 ] = rand() % x; a[ 3 ] = rand() % y; while(( a[ 0 ] - a[ 2 ] ) *( a[ 0 ] - a[ 2 ] ) +( a[ 1 ] - a[ 3 ] ) *( a[ 1 ] - a[ 3 ] ) != 1 || losowanie[ a[ 2 ] ][ a[ 3 ] ] == 0 ) { a[ 2 ] = rand() % x; a[ 3 ] = rand() % y; } statki_komputera[ a[ 2 ] ][ a[ 3 ] ] = 1; losowanie[ a[ 2 ] ][ a[ 3 ] ] = 0; a[ 4 ] = rand() % x; a[ 5 ] = rand() % y; while((( a[ 4 ] - a[ 2 ] ) *( a[ 4 ] - a[ 2 ] ) +( a[ 5 ] - a[ 3 ] ) *( a[ 5 ] - a[ 3 ] ) != 1 || losowanie[ a[ 4 ] ][ a[ 5 ] ] == 0 ) ||(( a[ 0 ] - a[ 4 ] ) *( a[ 0 ] - a[ 4 ] ) +( a[ 1 ] - a[ 5 ] ) *( a[ 1 ] - a[ 5 ] ) != 1 || losowanie[ a[ 4 ] ][ a[ 5 ] ] == 0 ) ) { a[ 4 ] = rand() % x; a[ 5 ] = rand() % y; } statki_komputera[ a[ 4 ] ][ a[ 5 ] ] = 1; losowanie[ a[ 4 ] ][ a[ 5 ] ] = 0; } } } for( k = 0; k < 5; k++ ) { i = 0; while( i = 0 ) { a[ 0 ] = rand() % x; a[ 1 ] = rand() % y; if( losowanie[ a[ 0 ] ][ a[ 1 ] ] == 1 ) { i = 1; statki_komputera[ a[ 0 ] ][ a[ 1 ] ] = 1; losowanie[ a[ 0 ] ][ a[ 1 ] ] = 0; a[ 2 ] = rand() % x; a[ 3 ] = rand() % y; while(( a[ 0 ] - a[ 2 ] ) *( a[ 0 ] - a[ 2 ] ) +( a[ 1 ] - a[ 3 ] ) *( a[ 1 ] - a[ 3 ] ) != 1 || losowanie[ a[ 2 ] ][ a[ 3 ] ] == 0 ) { a[ 2 ] = rand() % x; a[ 3 ] = rand() % y; } statki_komputera[ a[ 2 ] ][ a[ 3 ] ] = 1; } } } for( k = 0; k < 6; k++ ) { i = 0; while( i = 0 ) { a[ 0 ] = rand() % x; a[ 1 ] = rand() % y; if( losowanie[ a[ 0 ] ][ a[ 1 ] ] == 1 ) { i = 1; statki_komputera[ a[ 0 ] ][ a[ 1 ] ] = 1; losowanie[ a[ 0 ] ][ a[ 1 ] ] = 0; } } } ifstream wej( "Statki.txt" ); for( k = 0; k < 3; k++ ) { for( i = 0; i < 4; k++ ) { wej >> x; cin >> y; statki_gracza[ x ][ y ] = 1; }; }; for( k = 0; k < 4; k++ ) { for( i = 0; i < 3; k++ ) { wej >> x; wej >> y; statki_gracza[ x ][ y ] = 1; } } for( k = 0; k < 5; k++ ) { for( i = 0; i < 2; k++ ) { wej >> x; wej >> y; statki_gracza[ x ][ y ] = 1; } } for( k = 0; k < 6; k++ ) { wej >> x; wej >> y; statki_gracza[ x ][ y ] = 1; } wej.close(); for( i = 0; i < x; i++ ) for( i = 0; j < y; j++ ) { if( statki_gracza[ i ][ j ] == 1 ) al_draw_filled_rectangle( 0, 20, 35, 80, al_map_rgba( 0, 0, 0, 100 ) ); } wait( 5 ); al_flip_display(); } al_destroy_display( okno ); return 0; }
. |
|
Gabes |
» 2015-03-22 21:07:17 Wszystko po kolei. Tak powinno wyglądać kolejność wyświetlania na ekran while( !al_key_down( & klawiatura, ALLEGRO_KEY_ESCAPE ) ) { al_get_keyboard_state( & klawiatura ); al_clear_to_color( al_map_rgb( 128, 128, 128 ) ); al_flip_display(); } Dalej prosta obsługa zdarzeń,timera. Edycja: #include <allegro5/allegro.h> #include <allegro5/allegro_primitives.h> void rysuj_plac_gry( float pozX, float pozY, int ileX, int ileY, int kratka, ALLEGRO_COLOR color ) { for( int i = 0; i <= ileX; i++ ) al_draw_line( pozX + i * kratka, pozY, pozX + i * kratka, pozY + ileY * kratka, color, 2 ); for( int i = 0; i <= ileY; i++ ) al_draw_line( pozX, pozY + i * kratka, pozX + ileX * kratka, pozY + i * kratka, color, 2 ); } int main() { al_init(); al_install_keyboard(); al_init_primitives_addon(); ALLEGRO_KEYBOARD_STATE klawiatura; ALLEGRO_DISPLAY * okno = al_create_display( 800, 600 ); ALLEGRO_TIMER * zegar = al_create_timer( 1.0 / 60 ); ALLEGRO_EVENT_QUEUE * kolejka_zdarzen = al_create_event_queue(); al_register_event_source( kolejka_zdarzen, al_get_display_event_source( okno ) ); al_register_event_source( kolejka_zdarzen, al_get_timer_event_source( zegar ) ); al_start_timer( zegar ); ALLEGRO_EVENT zdarzenie; while( !al_key_down( & klawiatura, ALLEGRO_KEY_ESCAPE ) ) { al_get_keyboard_state( & klawiatura ); al_wait_for_event( kolejka_zdarzen, & zdarzenie ); if( zdarzenie.type == ALLEGRO_EVENT_DISPLAY_CLOSE ) return 0; if( zdarzenie.type == ALLEGRO_EVENT_TIMER ) { al_clear_to_color( al_map_rgb( 96, 96, 255 ) ); rysuj_plac_gry( 32, 32, 10, 10, 32, al_map_rgb( 255, 255, 255 ) ); rysuj_plac_gry( 384, 32, 10, 10, 32, al_map_rgb( 255, 0, 0 ) ); al_flip_display(); } } al_destroy_display( okno ); al_destroy_event_queue( kolejka_zdarzen ); return 0; } |
|
« 1 » 2 |