Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Aloittelijan ongelma

teenix [20.09.2007 15:13:56]

#

Ongelmana on se, kun yritän laittaa kahta kuvaa vaihtumaan, niin se ei toimi. Voisikos joku vilkaista koodia. Olen vasta muutaman viikon opiskellut SDL:ää

void AnimoiKuvat(SDL_Surface *naytto, SDL_Surface *eka, SDL_Surface *toka, int aika, int x, int y) {

bool animaatio = false;

while(!animaatio) {
            PiirraKuva(eka, naytto, x, y);
            SDL_Delay(aika);
           animaatio = true;
            }

while(animaatio) {

             PiirraKuva(toka, naytto, x, y);
             SDL_Delay(aika);
             animaatio = false;

             }


}

Megant [20.09.2007 15:25:52]

#

Jos sinulla on kaksoispuskurointi käytössä, joudut käyttämään funktiota SDL_Flip, jolle annetaan parametriksi osoitin näyttöpintaan.
Sen jälkeen muutosten pitäisi näkyä.

Ja nuissa while-loopeissa ja tuossa animaatio-muuttujassa ei ole ainakaan tuossa mitään järkeä.

teenix [20.09.2007 15:36:59]

#

Joo ja tiedoksi että ei ole kaksoispuskurointi.

Zach [20.09.2007 17:07:28]

#

Jos tarkoitus on joka toisella funktiokutsulla piirtää kuva "eka" ja vastaavasti joka toisella "toka", niin homma ei noin voikaan toimia - bool animaatio kun alustetaan joka kerralla uudestaan falseksi. Parempi ratkaisu olisi siirtää animaatio-muuttuja funktion parametriksi ja säilyttää sen arvoa funktion ulkopuolella.

Jatkossa kannattaa myös tutustua esim. SDL_GetTicks() -funktioon ja vaihtaa kuvat funktiossa vain, jos tarvittava aika on kulunut. SDL_Delay on vielä ~siedettävä ratkaisu pienessä kokeilussa, mutta jos tarvii ohjelmaan esim. jotain syötettä (hiiri, näppis), on se ihan turha.

Resiina [20.09.2007 18:56:51]

#

Zach kirjoitti:

Parempi ratkaisu olisi siirtää animaatio-muuttuja funktion parametriksi ja säilyttää sen arvoa funktion ulkopuolella.

Tai tehdään siitä animaatio-muttujasta static.

Vastaus

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

Tietoa sivustosta