【发布时间】:2017-08-14 08:06:59
【问题描述】:
我制作了一个蛇游戏,它运行良好,但是,当蛇到达屏幕边缘时,我让它循环回来。 问题是当他循环回来时,它似乎跳过了一段?
我不知道该怎么说,所以这里有一个视频。 https://youtu.be/fxuEYsrIZMU
它不只是出现在边缘,而是跳过 1 到 2 个图块。 这是代码sn-p:
void update(std::vector<sf::RectangleShape>& food) {
std::cout << body.size();
for(int i = body.size() - 1; i > 0; i--) {
checkBounds(body.at(i)); // Check Snake is in screen.
/* ... */
}
checkBounds(body.at(0));
/* ... */
}
void checkBounds(sf::RectangleShape& point) {
if(point.getPosition().x < 0) point.move(WIDTH, 0);
if(point.getPosition().y < 0) point.move(0, HEIGHT);
if(point.getPosition().x > WIDTH) point.move(-WIDTH, 0);
if(point.getPosition().y > HEIGHT) point.move(0, -HEIGHT);
}
WIDTH, HEIGHT 是屏幕 W. 和 H.
正文是std::vector<sf::RectangleShape>
这是完整的代码:
https://pastebin.com/sr4Tbrin
【问题讨论】: