轨道运行的C ++ SFML

时间:2016-07-11 08:33:39

标签: c++ sfml

我最近开始学习SFML,我有一个问题,如何制作第二个移动轨道的物体,请帮忙。

#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
   RenderWindow window(VideoMode(800, 600), "Hello, world!");

    CircleShape shape(50.f);
    shape.setFillColor(Color::Black);
    shape.setPosition(400,300);
    shape.setOrigin(50,50);

    CircleShape shape2(10.f);
    shape2.setFillColor(Color::Black);
    shape2.setPosition(700,500);
    shape2.setOrigin(10,10);

    while (window.isOpen())
    {
        Event event;
        while (window.pollEvent(event)) 
        {       
            if (event.type == sf::Event::Closed)        
                window.close();

        }
        window.clear(Color::White);
        window.draw(shape);
        window.draw(shape2);
        window.display();
    }
    return 0;
}

1 个答案:

答案 0 :(得分:2)

嗯......我不会发布完整的解决方案。给你完整的代码是没有教育意义的。但我会给你一些提示:)。

  1. 您的世界更新应该在循环中发生。在while循环中。那里有两个。您认为哪一个更新您的世界?
  2. 笛卡尔坐标系中的圆方程为:(x-a)^2 + (y-b)^2 = r^2
  3. 在1的循环中,您应该使用2中的等式来更新第二个对象(shape2)的坐标。
  4. 要从第3点开始执行操作,您有两种可能:函数setPosition和函数move,都是类CircleShape的成员。
  5. 如果您有其他问题,请在评论中提出。

    关于堆栈的未来问题:请告诉我们您在解决问题方面付出了一些努力。如果问题看起来像我现在回答的问题,我们认为你没有想到它只是在这里发布它而你正在等待有人为你编写代码。