蛇游戏 - 碰撞我不知道

时间:2015-06-06 11:44:22

标签: c++ sfml

我写游戏“蛇”,我的身体蛇有问题,即蛇头被保存到列表中

std::list<sf::RectangleShape> listaSnake;(库SFML)

并且我不知道如何在位置蛇头位置相同的情况下做碰撞。我只知道如何在头部和尾部之间进行碰撞。 我的想法:

auto HeadSnake = listaSnake.front();
auto tail = listaSnake.back();
    if (HeadSnake.getPosition().x == tail.getPosition().x && HeadSnake.getPosition().y == tail.getPosition().y) cout << "works!";

1 个答案:

答案 0 :(得分:0)

给定sf::RectangleShape,您可以构建sf::FloatRect(仅sf::Rect<float>),然后在两个sf::FloatRect之间调用sf::FloatRect::intersects

举个例子:

sf::RectangleShape a(..);
sf::RectangleShape b(..);

sf::FloatRect a_rect(a.getPosition(), a.getSize());
sf::FloatRect b_rect(b.getPosition(), b.getSize());

if (a_rect.intersects(b_rect)) {
    // ...
}