gpt4 book ai didi

c++ - GLUT定时器功能

转载 作者:行者123 更新时间:2023-11-28 05:23:00 24 4
gpt4 key购买 nike

我正在尝试让棋盘游戏上的代币缓慢下降。现在,他们倒下了,但他们倒下得如此之快。我怎样才能在我的代码中实现定时器功能?现在我做一个循环,更新 glTranslate 的 y 坐标。但还是太快了! top y 是我在屏幕上按下的 y 坐标,bottomy 是 token 最低空位的坐标。

col =0;

double bottomy = 0;
int row = 0;

circlex = (double)x / width ;
circley = (double)y / height ;

row = board.getRow(col) + 1;
bottomy = 500 - (25*row);

for( double topy = y ; topy <= bottomy; topy += 2 ){
glTranslatef(circlex, circley, 0.0f);
circley += .0000000000000000001;
display();
}

r = board.makeMove(col);

最佳答案

您可以使用 glutTimerFunc 在固定时间段执行功能。这有签名

void glutTimerFunc(unsigned int msecs,
void (*func)(int value),
value);

例如,如果您的绘图函数是

void UpdateTokens(int time);

然后您可以使用以下调用每 0.5 秒调用一次更新(其中 current_time 是当前模拟时间)

glutTimerFunc(500, UpdateTokens, current_time);

为了更精确的计时,我建议使用 <chrono> 相反,并使用 std::chrono::duration 之类的东西来执行计时用 std::chrono::steady_clock .

关于c++ - GLUT定时器功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41079809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com