c++ - 我试图将光标平滑地移动到随机点
问题描述
我正在尝试制作一个在不同点随机移动光标的程序,但我不希望它只是传送,因此我需要让它传送到逐渐到达目的地的点。我想我可以让 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);
}
}
解决方案
您需要一个变量来跟踪时间(或呼叫次数等)。让我们称之为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)。
我会让你把它们组装在一起,然后根据需要提出具体的问题。
推荐阅读
- xamarin.ios - FluentLayout 中的更改约束
- ios - iOS 13:使用新的 NEHotspotConfiguration.init(ssidPrefix: String) 似乎不起作用
- nginx - Nginx 位置域.ltd 正则表达式
- amazon-web-services - AWS GovCloud 与美国以外地区的连接
- julia - 如何在 Julia 中生成一维高斯滤波器?
- azure-devops - Azure DevOps 的缩写是什么?
- mysql - 2002, "Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)" in docker-compose up
- api - Closure Compiler Service API 缺少 --create_source_map 选项
- ruby-on-rails - 如何在 Rails 中配置 CORS 接受标头
- python - Scraping HTML from array of links