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

Allegro 5 + fstream

Ostatnio zmodyfikowano 2014-02-19 20:08
Autor Wiadomość
ziajek444
Temat założony przez niniejszego użytkownika
Allegro 5 + fstream
» 2014-02-19 16:17:00
No więc, jest sobie taki kod: (daje od pętli głównej bo program czy z błędem czy bez wchodzi do niej więc na pewno jest wszystko w porządku wyżej)
C/C++
while( !done )
{
    al_get_keyboard_state( & klaw );
   
    al_get_mouse_state( & mysz );
   
    al_clear_to_color( al_map_rgb( 128, 90, 150 ) );
    if( save == 1 ) cout << "gra sie toczy";
   
    if( lpm == 0 && mysz.buttons & 1 )
    {
        mx1 = mysz.x;
        my1 = mysz.y;
        grab = 1;
        lpm = 1;
        cout << "kliknoles" << endl;
    }
    if( lpm == 1 && !mysz.buttons & 1 )
    {
        mx2 = mysz.x;
        my2 = mysz.y;
        cout << "pusciles" << endl;
        rysuj = 1;
        grab = 0;
        lpm = 0;
    }
    if( ppm == 1 && !mysz.buttons & 3 )
    {
        cout << "delit " << ppm << endl;
       
        ppm = 0;
       
    }
    if( ppm == 0 && mysz.buttons & 2 )
    {
        cout << "jep " << ppm << endl;
        ppm = 1;
        del = 1;
    }
   
   
    if( grab == 1 ) al_draw_rectangle( mx1, my1, mysz.x, mysz.y, al_map_rgb( 0, 0, 0 ), 4 );
   
    if( grab == 0 && rysuj == 1 && mx1 < mysz.x )
    {
       
        wsk_map[ next ] = new mapa;
        if( my1 < my2 )
        {
            while( my2 > my1 + 20 ) //ogranczenia
            {
                my2--;
            }
            while( my2 < my1 + 20 ) //ogranczenia
            {
                my2++;
            }
            wsk_map[ next ]->setWsp( mx1, my1, mx2, my2 );
        }
        else
        {
            bufor = my2;
            my2 = my1;
            my1 = bufor;
            while( my2 > my1 + 20 ) //ogranczenia
            {
                my2--;
            }
            while( my2 < my1 + 20 ) //ogranczenia
            {
                my2++;
            }
            wsk_map[ next ]->setWsp( mx1, my1, mx2, my2 );
        }
        cout << next << endl;
        next++;
        rysuj = 0;
    }
   
   
   
    if( grab == 0 && rysuj == 1 && mx1 > mysz.x )
    {
        wsk_map[ next ] = new mapa;
        if( my1 < my2 )
        {
            while( my2 > my1 + 20 ) //ogranczenia
            {
                my2--;
            }
            while( my2 < my1 + 20 ) //ogranczenia
            {
                my2++;
            }
            wsk_map[ next ]->setWsp( mx2, my1, mx1, my2 );
        }
        else
        {
            bufor = mx2;
            mx2 = mx1;
            mx1 = bufor;
            bufor = my2;
            my2 = my1;
            my1 = bufor;
            while( my2 > my1 + 20 ) //ogranczenia
            {
                my2--;
            }
            while( my2 < my1 + 20 ) //ogranczenia
            {
                my2++;
            }
            wsk_map[ next ]->setWsp( mx1, my1, mx2, my2 );
        }
        cout << next << endl;
        next++;
        rysuj = 0;
    }
   
   
   
    if( del == 1 )
    {
       
        //delete wsk_map[next-1];
        if( next > 0 ) next--;
       
        del = 0;
    }
   
    //cout<<"dupa"<<endl;
   
    for( int i = 0; i < next; i++ )
    {
        wsk_map[ i ]->getKladka();
        wsk_map[ i ]->setNaroznik( mysz.x, mysz.y );
    }
   
   
    done = zamknij();
    if( al_key_down( & klaw, ALLEGRO_KEY_ENTER ) ) save = 1;
   
    al_flip_display();
    al_rest( 0.01 );
};

//fstream plik;
//plik.open("abc.txt", ios::in);

//plik.close();
al_shutdown_primitives_addon();
al_destroy_display( display );
return 0;
}
bez "fstream plik;" wszystko działa. ale jak napisze fstream plik; (gdziekolwiek np. przed pętlą, po pętli,) to i tak dochodzi do pętli i dopiero tam jest crash jak kliknę lewy;
P-104967
pekfos
» 2014-02-19 19:34:56
next jest poprawnym indeksem wsk_map?
P-104977
ziajek444
Temat założony przez niniejszego użytkownika
» 2014-02-19 20:08:30
Ponad pętlą 'next' (int next=0) domyślnie dostaje wartość 0 więc jest gites. Ale crash występuje zanim puszcze LPM więc nie dochodzi do wsk_map[next]=new mapa;

edit// Jest jeszcze jedna dziwna sprawa w kodzie. Generalnie mi to wogle nie przeszkadza ale tak CHYBA nie powinno być. Otóż:
if( !mysz.buttons & 3 )
 Odpowiada za puszczenie PPM a
if( mysz.buttons & 2 )
 Odpowiada za wcisnięty PPM. Co ciekawe, w przypadku LPM wystarczy tylko 
if( mysz.buttons & 1 )
 i
if( !mysz.buttons & 1 )
 Nie wiem czemu tak jest.
P-104980
« 1 »
  Strona 1 z 1