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;
}
Show differencesHistory of post edits
#ActualSimonForsman
Posted 21 February 2012 - 04:04 PM
How about:
#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;
}