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

[SDL] Wczytywanie grafik pobranych z internetu oraz obsługa konsolowego wejścia/wyjścia

Ostatnio zmodyfikowano 2017-10-04 19:24
Autor Wiadomość
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:
C/C++
#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;
}
P-165411
pekfos
» 2017-10-02 18:54:54
Te pliki z internetu to też BMP?
P-165412
SzymSzym
Temat założony przez niniejszego użytkownika
» 2017-10-04 19:24:40
Tak, zapisuję je jako BMP.
P-165453
« 1 »
  Strona 1 z 1