Считайте вектор скорости и потом делите на его длину. В зависимости от зажатых кнопок прибавляйте или вычитайте speed из vx или vy (которые изначально 0). Потом, после проверок, делите оба числа на
sqrt(vx*vx+vy*vy)
(если оно не 0) и сдвигайте спрайт на vx, vy.
Можно соптимизировать - прибавляйте 1/-1 вместо speed. Тогда значение
vx*vx+vy*vy
может быть только 0,1 или 2. Заведите константный массив
kScaleCoef[3] = {1, 1, sqrt(2)}
и потом делайте
Sprite.Move(speed/kScaleCoef[vx*vx+vy*vy]*vx, speed/kScaleCoef[vx*vx+vy*vy]*vy);