Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

funkcja al_flip_display();

Ostatnio zmodyfikowano 2015-03-22 21:07
Autor Wiadomość
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)
P-128967
pekfos
» 2015-03-22 20:26:57
P-128968
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ść ?
P-128969
pekfos
» 2015-03-22 20:41:33
Wywołujesz po wyświetleniu wszystkiego.
P-128970
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.
P-128971
pekfos
» 2015-03-22 20:50:06
Kod..?
P-128973
krakers
Temat założony przez niniejszego użytkownika
» 2015-03-22 20:55:42
C/C++
#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(); // event_queue
    al_register_event_source( kolejka, al_get_display_event_source( okno ) );
    ALLEGRO_EVENT zdarzenie; // event
    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 ) ); //tło
       
        rysuj_plac_gry( x, y );
       
        //   al_rest(0.005);//pauza
       
       
        // Symulacja_statkow_komputera (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;
        }
       
        // czteromasztowce
       
        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;
                }
            }
        }
       
       
       
       
        //trojmasztowce
       
        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;
                }
            }
        }
       
        // dwumasztowce
       
        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;
                }
            }
        }
       
        // jednomasztowce
       
        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;
                }
            }
        }
       
        // Symulacja_statkow_komputera (x,y) - koniec
       
        //  Gracz ustala swoje statki
       
        ifstream wej( "Statki.txt" );
       
       
        // czteromasztowce
       
        for( k = 0; k < 3; k++ )
        {
            for( i = 0; i < 4; k++ )
            {
                wej >> x;
                cin >> y;
                statki_gracza[ x ][ y ] = 1;
            };
        };
       
       
        //trojmasztowce
       
        for( k = 0; k < 4; k++ )
        {
            for( i = 0; i < 3; k++ )
            {
                wej >> x;
                wej >> y;
                statki_gracza[ x ][ y ] = 1;
            }
        }
       
       
        // dwumasztowce
       
        for( k = 0; k < 5; k++ )
        {
            for( i = 0; i < 2; k++ )
            {
                wej >> x;
                wej >> y;
                statki_gracza[ x ][ y ] = 1;
            }
        }
       
       
        // jednomasztowce
       
        for( k = 0; k < 6; k++ )
        {
            wej >> x;
            wej >> y;
            statki_gracza[ x ][ y ] = 1;
        }
        wej.close();
       
        //  Gracz ustala swoje statki - koniec
       
        //zaznaczanie statkow gracza
       
        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 ) );
           
        }
       
        //zaznaczanie statkow gracza - koniec
       
       
        wait( 5 );
       
       
       
        al_flip_display();
       
       
    }
    al_destroy_display( okno );
    return 0;
}
.
P-128974
Gabes
» 2015-03-22 21:07:17
Wszystko po kolei.
Tak powinno wyglądać kolejność wyświetlania na ekran
      
C/C++
while( !al_key_down( & klawiatura, ALLEGRO_KEY_ESCAPE ) )
{
    // odczyt klawiatury
    al_get_keyboard_state( & klawiatura );
   
    //kolor okna, wyczyszczenie bufora ekranu
    al_clear_to_color( al_map_rgb( 128, 128, 128 ) );
   
    // sterowanie myszką, klawiaturą
    // tu  umieścić wszystko co ma być wyświetlane
   
    // wyświetlanie na ekran
    al_flip_display();
}

Dalej prosta obsługa zdarzeń,timera.

Edycja:

C/C++
#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 );
        // zaczekaj na zdarzenie
        al_wait_for_event( kolejka_zdarzen, & zdarzenie );
       
        if( zdarzenie.type == ALLEGRO_EVENT_DISPLAY_CLOSE ) return 0;
       
        // jesli mineła 1/60 sek. to wykonaj  poniższą czynność
        if( zdarzenie.type == ALLEGRO_EVENT_TIMER )
        {
            //kolor okna, wyczyszczenie bufora ekranu
            al_clear_to_color( al_map_rgb( 96, 96, 255 ) );
           
            // obsluga myszki, klawiatury
            // tu  umieścić wszystko co ma być wyświetlane
            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 ) );
           
            // wyświetlanie na ekran
            al_flip_display();
        }
    }
    al_destroy_display( okno );
    al_destroy_event_queue( kolejka_zdarzen );
    return 0;
}

P-128978
« 1 » 2
  Strona 1 z 2 Następna strona