我正在尝试制作一个程序,以将光标随机移动到不同的点,但是我不希望它只是传送,因此我需要使其逐渐传送到目标位置。我想我可以先使x和y坐标1,然后对其进行++,这样看起来非常平滑。这行得通吗?
ps。抱歉,如果我看起来像nooby,那是因为我两周前才刚刚学习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);
}
}
最佳答案
您将需要一个变量来跟踪时间(或通话次数或其他)。我们称之为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);
当t = 0.0时,(x0,y0)会给您一个介于(x0,y0)和(x1,y1)之间的点,而当t = 1.0时会给您一个点(x1,y1)。
我将让您将它们组合在一起,并根据需要提出具体问题。
关于c++ - 我试图将光标平滑移动到随机点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58172784/