c - Changing direction of moving sprite by 90 degrees upon button press acting strangely -


i developing small game on microprocessor, , i'm trying function changes direction sprite moving 90 degrees either left or right dependent on left button press, or right button press.

currently code. changing direction, doesn't perform task desired..

 void change_direction(sprite * sprite) {  sprite->x += sprite->dx;//these 2 lines tell sprite move in whatever direction button presses tell to. default moves in straight line in northern direction. sprite->y += sprite->dy;  if ( pressed( sw1 ) ) { sprite->dx = (sprite->dy) ? -sprite->dy : 1;//this code broken, moves either diagonally upwards, or right. should turn sprite 90 degrees left everytime switch pressed. sprite->dy = (sprite->dy) ? 0 : -sprite->dx;  }  else if( pressed( sw0 ) ) {//this code turns sprite right once default direction, not again. should turn sprite 90 degrees everytime. sprite->dx = -1; sprite->dy = 0; }  } 

i had idea of how approach this; switch press doesn't change new direction through changing dx dy values locally, instead increments or decrements integer controls direction. don't know how implement such thing however.

turn right 90 degrees:

tmp = -sprite->dx; sprite->dx = sprite->dy; sprite->dy = tmp;  

turn left 90 degrees:

tmp = sprite->dx;  sprite->dx = -sprite->dy; sprite->dy = tmp; 

edit:

if temporary shift (while button pressed), need apply modifier when updating x/y instead:

if (left_button_pressed) {     sprite->x -= sprite->dy;     sprite->y += sprite->dx; }  else if (right_button_pressed) {     sprite->x += sprite->dy;     sprite->y -= sprite->dx; } else {     sprite->x += sprite->dx;     sprite->y += sprite->dy; } 

Comments

Popular posts from this blog

IF statement in MySQL trigger -

c++ - What does MSC in "// appease MSC" comments mean? -

javascript - Blogger related post gadget image Resize s72-c [ Need Expert Help ] -