void CPlayer::Exec() { const float move_s = 4.0f; const float move_a = move_s / sqrtf(2.0f); BYTE ppos = input->GetPovPosition(); BOOL left = input->IsKeyDown(DIK_LEFT); left |= (ppos & PP_LEFT) ? TRUE : FALSE ; BOOL right = input->IsKeyDown(DIK_RIGHT); right |= (ppos & PP_RIGHT) ? TRUE : FALSE ; BOOL up = input->IsKeyDown(DIK_UP); up |= (ppos & PP_UP) ? TRUE : FALSE ; BOOL down = input->IsKeyDown(DIK_DOWN); down |= (ppos & PP_DOWN) ? TRUE : FALSE ; if(up & left){ x -= move_a; y -= move_a; }else if(up & right){ x += move_a; y -= move_a; }else if(down & left){ x -= move_a; y += move_a; }else if(down & right){ x += move_a; y += move_a; }else if(up){ y -= move_s; }else if(down){ y += move_s; }else if(left){ x -= move_s; }else if(right){ x += move_s; } if(x < 32.0f) x = 32.0f; else if(x > 640.0f - 32.0f) x = 640.0f - 32.0f; if(y < 32.0f) y = 32.0f; else if(y > 480.0f - 32.0f) y = 480.0f - 32.0f; if(left){ sprite.SetFrame(2); }else if(right){ sprite.SetFrame(1); }else{ sprite.SetFrame(0); } sprite.Draw(x, y); }