sqrt(vx*vx+vy*vy)
(если оно не 0) и сдвигайте спрайт на vx, vy.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);
std::vector<int> MakeArray();
void Print(const std::vector<int> array);
int* MakeArray(int *len);
void Print(int *array, int len);
size
и потом проходитесь циклом до size по обеим строкам. Но ведь более короткой строки там просто нет - вы обращаетесь к не вашей памяти.