Jump to content

  • Log In with Google      Sign In   
  • Create Account

Awesome job so far everyone! Please give us your feedback on how our article efforts are going. We still need more finished articles for our May contest theme: Remake the Classics

#ActualSimonForsman

Posted 21 February 2012 - 04:04 PM

How about:

bool keys[256];
for (int i=0;i<256;i++) {
	keys[i]=false;
}

//event stuff, should be in a loop with pollevent since you want to process more than one event per frame if there is more than one in the queue
if (event.type == SDL_KEYDOWN) {
	keys[event.key.keysym.sym]=true;
} else if (event.type == SDL_KEYUP) {
		keys[event.key.keysym.sym]=false;
}

//update stuff here:
player.vx=0.0f;
player.vy=0.0f;
if (keys[SDLK_UP] {
	player.vy-=1.0f;
}
if (keys[SDLK_DOWN] {
	player.vy+=1.0f;
}
if (keys[SDLK_LEFT] {
	player.vx-=1.0f;
}
if (keys[SDLK_RIGHT] {
	player.vx+=1.0f;
}
//normalize direction:
float length = sqrt(player.vx*player.vx + player.vy*player.vy);
if (length>0.0f) {
	player.vx/=length;
	player.vy/=length;
}

#1SimonForsman

Posted 21 February 2012 - 04:02 PM

How about:

bool keys[256];
for (int i=0;i<256;i++) {
    keys[i]=false;
}
if (event.type == SDL_KEYDOWN) {
    keys[event.key.keysym.sym]=true;
} else if (event.type == SDL_KEYUP) {
        keys[event.key.keysym.sym]=false;
}

//update stuff here:
player.vx=0.0f;
player.vy=0.0f;
if (keys[SDLK_UP] {
    player.vy-=1.0f;
}
if (keys[SDLK_DOWN] {
    player.vy+=1.0f;
}
if (keys[SDLK_LEFT] {
    player.vx-=1.0f;
}
if (keys[SDLK_RIGHT] {
    player.vx+=1.0f;
}
//normalize direction:
float length = sqrt(player.vx*player.vx + player.vy*player.vy);
if (length>0.0f) {
    player.vx/=length;
    player.vy/=length;
}

PARTNERS