eli ongelma on nyt seuraavan lainen:
Uint8* nappi; while(end==false) { nappi=SDL_GetKeyState(NULL); if(nappi[SDLK_UP]) { ukkoy-=1; } if(nappi[SDLK_DOWN]) { ukkoy+=1; } if(nappi[SDLK_LEFT]) { ukkox-=1; } if(nappi[SDLK_RIGHT]) { ukkox+=1; } if(nappi[SDLK_ESCAPE]) { end=true; } draw1(ukko, screen, ukkox, ukkoy); SDL_Flip(screen); }
tuo koodi jumittaa ohjelman, aiheuttaen 'Ohjelma ei vastaa' ilmoituksen ja ilmeisesti myös muistivuotoa, koska koodin suoritus ilmeisesti päättyy tuohon silmukkaan(tiedän asian, koska kenttä piirretään onnistuneesti, ja ylläoleva koodi tulee heti generoinnin jälkeen)
eli näkeekö joku mikä tos mättää?
Et päivitä eventejä silmukassasi.
Lisää loopin alkuun
SDL_PumpEvent();
tai
SDL_PollEvent(NULL);
Edit: Sinun ei tarvitse kutsua SDL_GetKeyEvents()-funktiota, kuin kerran ohjelmassasi. Se palauttaa aina saman osoitteen :) Sama pätee SDL_GetMouseState()-funktiota.
mahtavaa, kiitoksia :D
paitsi että se oli
SDL_PollEvent(&event);
mutta kiitoksia kuitenkin, sain toimimaan(paitsi että sen ukon kuva jää vielä kentälle...)
Ruudun voi tyhjentää tähän tapaan:
SDL_FillRect(näyttöpinta, NULL, väri); // NULL = Kokonäyttö
www.libsdl.org->docwiki
no niinpä tietysti =/
munhan täytyy tietysti joka loopin alussa piirtää se koko kenttä uudestaan 0.o
olinpa höhlä..
mutta kiitoksia uudemman kerran avusta :D
Gaxx kirjoitti:
Se palauttaa aina saman osoitteen :) Sama pätee SDL_GetMouseState()-funktiota.
Paitsi että tuo ei palauta mitään osoitinta ja toimii muutenkin aivan eri ajatuksella. Tuollehan annetaan parametrina muuttujat, joihin se kopioi hiiren sijainnin kutsuhetkellä, ja se palauttaa suoraan lukuna painikkeiden tilan.
Metabolix kirjoitti:
Gaxx kirjoitti:
Se palauttaa aina saman osoitteen :) Sama pätee SDL_GetMouseState()-funktiota.
Paitsi että tuo ei palauta mitään osoitinta ja toimii muutenkin aivan eri ajatuksella. Tuollehan annetaan parametrina muuttujat, joihin se kopioi hiiren sijainnin kutsuhetkellä, ja se palauttaa suoraan lukuna painikkeiden tilan.
Joo :) Muistin väärin enkä vaivautunut tarkistamaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.