Teen SDL:llä pientä highscore-järjestelmää peliini ja olen päässyt vaiheeseen, jossa pitäisi lukea näppäimistöltä kirjaimia ja tulostaa ne ruudulle. Olen onnistunut kaikessa muussa paitsi siinä, että kirjaimia tulee kerrallaan aivan liikaa. Kuinka voin rajoittaa luettujen näppäimien määrää?
Esim. jos kirjoitan nimeni burton, tulee bbbuuuuurrrrtttooooonnnn.
Laita kirjaimen lukeminen joko SDL_KEYUP- tai SDL_KEYDOWN-keskeytyksen alle sen sijaan, että luet koko näppäimistön tilaa jatkuvasti.
Minulla on näin:
SDL_PollEvent(&tapahtuma); if (tapahtuma.type==SDL_KEYDOWN) { switch (tapahtuma.key.keysym.sym) { case SDLK_q: . . . } }
Tuon tavan ongelma on se, että jos ei ole uutta viestiä, tapahtuma on sama kuin viimeksikin. Lisäksi käsittelet joka kierroksella vain yhden tapahtuman. Laita kaikki tapahtumankäsittely yhteen silmukkaan, tähän tapaan:
// Hoidetaan kaikki odottamassa olevat tapahtumat while (SDL_PollEvent(&tapahtuma)) { // if (tapahtuma.type == ...) }
Aihe on jo aika vanha, joten et voi enää vastata siihen.