Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Liikkumisongelma (SDL/C++)

ByteMan [09.11.2007 22:50:41]

#

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ää?

Gaxx [09.11.2007 22:58:05]

#

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.

ByteMan [09.11.2007 23:08:50]

#

mahtavaa, kiitoksia :D

paitsi että se oli

SDL_PollEvent(&event);

mutta kiitoksia kuitenkin, sain toimimaan(paitsi että sen ukon kuva jää vielä kentälle...)

Gaxx [09.11.2007 23:14:36]

#

Ruudun voi tyhjentää tähän tapaan:

SDL_FillRect(näyttöpinta, NULL, väri); // NULL = Kokonäyttö

www.libsdl.org->docwiki

ByteMan [09.11.2007 23:19:21]

#

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

Metabolix [10.11.2007 15:04:03]

#

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.

Gaxx [10.11.2007 15:26:10]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta