[SDL] Wczytywanie grafik pobranych z internetu oraz obsługa konsolowego wejścia/wyjścia
Ostatnio zmodyfikowano 2017-10-04 19:24
SzymSzym Temat założony przez niniejszego użytkownika |
[SDL] Wczytywanie grafik pobranych z internetu oraz obsługa konsolowego wejścia/wyjścia » 2017-10-02 18:51:51 W ramach ćwiczeń SDL'a napisałem prostą grę polegającą na klikaniu wyświetlanych na ekranie obiektów. Program miał naliczać na tej podstawie punkty i przerwać się jeśli użytkownik nie kliknął obiektu przez 5 sekund. Natrafiłem wówczas na 2 problemy. Pierwszy to to, że SDL nie wczytuje obrazów pobranych z internetu. Zapisałem go oczywiście jako bitmapę i odblokowałem w właściwościach - mimo tego program nie jest w stanie go odczytać, odczytuje zaś bez problemu pliki z Painta. Skopiowanie pliku do katalogu, w którym znajduje się projekt nie pomogło. Drugim problemem jest to, że program nie wypisuje danych na wejście i wyjście samej konsoli (zarówno przy użyciu cout jak i printf). Teoretycznie poniższy program powinien po zamknięciu okna z grą wypisać na konsoli "Twoje punkty: " i liczbę punktów, jednak wciąż wypisuje jedynie "Process returned 0 (0x0)..." i tak dalej. Czy ktoś zna rowiązanie tych dwóch problemów? Tu kod: #include <SDL/SDL.h> #include <iostream> #include <cstdlib> #include <ctime>
SDL_Surface * ekran = NULL; SDL_Surface * tlo = NULL; SDL_Surface * kolko = NULL; SDL_Rect kolkoDane, kolkoCel; int myszkaX, myszkaY; SDL_Event zdarzenie; bool wyjscie = false; unsigned int punkty = 0; const long delay = 5 * CLOCKS_PER_SEC; clock_t start;
int main( int argc, char * args[] ) { SDL_Init( SDL_INIT_EVERYTHING ); ekran = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE | SDL_DOUBLEBUF ); kolko = SDL_LoadBMP( "C:\\Users\\szymszym\\Pictures\\kolko.bmp" ); tlo = SDL_LoadBMP( "C:\\Users\\szymszym\\Pictures\\tlo2.bmp" ); SDL_BlitSurface( tlo, NULL, ekran, NULL ); SDL_Flip( ekran ); kolkoDane.w = 50; kolkoDane.h = 50; while( !wyjscie ) { kolkoCel.x = rand() % 540 + 50; kolkoCel.y = rand() % 380 + 50; SDL_BlitSurface( kolko, & kolkoDane, ekran, & kolkoCel ); SDL_Flip( ekran ); start = clock(); while( SDL_PollEvent( & zdarzenie ) || clock() - start <= delay ) { if( zdarzenie.type == SDL_QUIT ) { wyjscie = true; break; } if( zdarzenie.type == SDL_MOUSEMOTION ) { myszkaX = zdarzenie.motion.x; myszkaY = zdarzenie.motion.y; } if( zdarzenie.type == SDL_MOUSEBUTTONDOWN ) { if( zdarzenie.button.button == SDL_BUTTON_LEFT && ( myszkaX >= kolkoCel.x && myszkaX <= kolkoCel.x + kolkoDane.w ) && ( myszkaY >= kolkoCel.y && myszkaY <= kolkoCel.y + kolkoDane.h ) ) { punkty++; break; } } } SDL_BlitSurface( tlo, NULL, ekran, NULL ); SDL_Flip( ekran ); } SDL_FreeSurface( kolko ); SDL_FreeSurface( tlo ); std::cout << "Twoje punkty: " << std::endl; SDL_Quit(); return 0; }
|
|
pekfos |
» 2017-10-02 18:54:54 Te pliki z internetu to też BMP? |
|
SzymSzym Temat założony przez niniejszego użytkownika |
» 2017-10-04 19:24:40 Tak, zapisuję je jako BMP. |
|
« 1 » |