找到最小的小行星c ++位置

Ala*_*her 4 c++ visual-c++

游戏小行星在圆环表面上播放.

Pet*_*man 7

好吧,因为你可以环绕屏幕的任何边缘,小行星和船之间总是有4条直线(向上和向左,向上和向右,向下和向左,向下和向右).我只计算每个的长度并取最小的结果.

int dx1 = abs(ship_x - asteroid_x);
int dx2 = screen_width - dx1;

int dy1 = abs(ship_y - asertoid_y);
int dy2 = screen_height - dy1;

// Now calculate the psuedo-distances as Pete suggests:
int psuedo1 = (dx1 * dx1) + (dy1 * dy1);
int psuedo2 = (dx2 * dx2) + (dy1 * dy1);
int psuedo3 = (dx1 * dx1) + (dy2 * dy2);
int psuedo4 = (dx2 * dx2) + (dy2 * dy2);
Run Code Online (Sandbox Code Playgroud)

这显示了如何计算所涉及的各种距离.将每一个映射到适当的方向有一点复杂性.