首页 > 解决方案 > 我试图将光标平滑地移动到随机点

问题描述

我正在尝试制作一个在不同点随机移动光标的程序,但我不希望它只是传送,因此我需要让它传送到逐渐到达目的地的点。我想我可以让 x 和 y 坐标为 1,然后 ++ 它看起来非常平滑。这行得通吗?

附言。对不起,如果我看起来很笨,那是因为我两周前刚学了 C++。:)

 class CursFluidity {
    public:

    void gotoxy(int x, int y)
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), ++y);
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), ++X);
}
}

标签: c++winapimouseeventcursor-position

解决方案


您需要一个变量来跟踪时间(或呼叫次数等)。让我们称之为t。拨打多个电话时,您还需要源和目标位置。比方说:

class CursFluidity {
public:

    void gotoxy(int x0, int y0, int x1, int y1, float t);

假设您经常调用它,t从 0.0 到 1.0。然后,

float x = x1 * t + x0 * (1.0 - t);
float y = y1 * t + y0 * (1.0 - t);

会给你一个介于 (x0, y0) 和 (x1, y1) 之间的点,当 t = 0.0 时 (x0, y0) 和当 t = 1.0 时 (x1, y1)。

我会让你把它们组装在一起,然后根据需要提出具体的问题。


推荐阅读