Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Vasen kontrolli antaa kakkosen

Lahha [03.09.2009 19:48:19]

#

Miksiköhän tämä syöttää puskuriin(pushToBuffer) kakkosen kun painaa vasenta kontrollia?

void Input::updateBuffer()
{
	for(int i=0; i < SDLK_LAST; i++)
	{
		if(keyboard[i] && !keys[i])
		{
			if(islower(i))
			{
				if(keyboard[SDLK_LSHIFT])
					pushToBuffer(toupper(i));
				else
					pushToBuffer(i);

			}
			else if(isspace(i))
			{
				if(i == SDLK_RETURN)
					pushToBuffer('\n');
				else
					pushToBuffer(i);
			}
			else if(isdigit(i))
				pushToBuffer(i);

			keys[i]=1;
		}
		else if(keys[i] && !keyboard[i])
			keys[i]=0;
	}
}

Metabolix [03.09.2009 19:58:34]

#

Koska (char)SDLK_LCTRL = (SDLK_LCTRL % 256) = (306 % 256) = 50 = '2'. Tarkistuksissasi ei ole järkeä, kun i > 255, joten huomioi tämä joko if-lauseella tai rajoittamalla for-silmukkaa.

if (i > 255) {
  // tyhjä
} else if (islower(i)) { ... }

Lahha [03.09.2009 20:04:26]

#

Sillähän se selvisi.

Kiitokset.

Vastaus

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

Tietoa sivustosta