我无法让我的移动点程序正常运行。我有程序将圆点按预期的方式向右移动,但是如何使它们回圈,以使它们看起来像是连续移动而不是移出页面?为了实现这一点,我需要编辑以下代码块。希望有人能帮助并再次感谢!

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;
  }
}

10-06 01:52