Allegro 5 + fstream
Ostatnio zmodyfikowano 2014-02-19 20:08
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) 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 ) { my2--; } while( my2 < my1 + 20 ) { my2++; } wsk_map[ next ]->setWsp( mx1, my1, mx2, my2 ); } else { bufor = my2; my2 = my1; my1 = bufor; while( my2 > my1 + 20 ) { my2--; } while( my2 < my1 + 20 ) { 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 ) { my2--; } while( my2 < my1 + 20 ) { 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 ) { my2--; } while( my2 < my1 + 20 ) { my2++; } wsk_map[ next ]->setWsp( mx1, my1, mx2, my2 ); } cout << next << endl; next++; rysuj = 0; } if( del == 1 ) { if( next > 0 ) next--; del = 0; } 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 ); };
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; |
|
pekfos |
» 2014-02-19 19:34:56 next jest poprawnym indeksem wsk_map? |
|
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. |
|
« 1 » |