C++ - 如何让移动点连续循环?

标签 c++ oop

我无法让我的移动点程序正常工作。我有程序让点像它们应该的那样向右移动,但是我如何让它们循环回来让它们看起来像是在连续移动而不是离开页面?我需要编辑以实现此目的的代码块如下。我希望有人能提供帮助并再次感谢!

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/

相关文章:

C++ cin 仅限正整数

perl - 我的声明会发生什么?

python - python 方法如何自动接收 'self' 作为第一个参数?

javascript - 在 Javascript 中显示/管理文件/目录列表?

javascript - 使用不同方法创建时创建的对象的差异

php - 逐步将项目添加到站点

c++ - 定义的常量在 visual studio 中表现得很奇怪

c# - 同一文件中的文本和二进制数据

android - Qt Android 手势问题

c++ - Boost/std bind 如何解决此类错误? (从一个类到另一个类的绑定(bind)函数)