首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++ -如何让移动点连续循环?

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

Stack Overflow用户
提问于 2017-01-28 10:26:55
回答 2查看 541关注 0票数 1

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

代码语言:javascript
运行
复制
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++;
    }
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-28 10:45:18

如果您当前正在“左移”vs“右移”,则需要另一个变量来跟踪。然后当你到达一个边界时交换。

如下所示:

代码语言:javascript
运行
复制
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;      
  }
}
票数 3
EN

Stack Overflow用户

发布于 2017-01-28 10:40:44

通常情况下,位置是有某种边界的。我假设它是用XWindowAttributes编写的,只是为了给你举个例子:

要让这些点“回到”开头,而不是“移出页面”,你可以像这样将它们放回原处:

代码语言:javascript
运行
复制
//I dont know the structure of XWindowAttributes so i will define one just for the example!

struct XWindowAttributes
{
    int x_size; // the maximal size of the window in the x direction
};

void advanceDots(XPoint dots[], unsigned num_dots, XWindowAttributes &w)
{
    for(int s = 0; s < num_dots; s++)
    {
        XPoint& dot = dots[s];
        dots.x++;

        if(dots.x >= w.x_size)
        {
            dots.x = 0;
        }
    }
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41905774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档