我无法让我的移动点程序正常工作。我有程序让点像它们应该的那样向右移动,但是我如何让它们循环回来让它们看起来像是在连续移动而不是离开页面?我需要编辑以实现此目的的代码块如下。我希望有人能提供帮助并再次感谢!
void advanceDots(XPoint dots[], unsigned num_dots, XWindowAttributes &w){
int s = num_dots;
for(s = 0; s < num_dots; s++){
if(s < num_dots){
dots[s].x++;
}
}
}
最佳答案
如果您当前是“向左移动”还是“向右移动”,您将需要另一个变量来跟踪。然后在遇到边界时交换。
像这样:
bool isMovingLeft = false;
void advanceDots(XPoint dots[], unsigned num_dots, XWindowAttributes &w)
{
if (isMovingLeft && (dots[0].x <= 0))
{
isMovingLeft = false;
}
else if (!isMovingLeft && dots[num_dots-1] >= w.width)
{
isMovingLeft = true;
}
int increment = isMovingLeft ? -1 : 1;
int s = num_dots;
for(s = 0; s < num_dots; s++)
{
dots[s].x += increment;
}
}
关于C++ - 如何让移动点连续循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41905774/