-2
我做了一个贪吃蛇游戏,它很好用,但是,当蛇到达屏幕边缘时,我将它循环回来。 问题是,当他环回时,它似乎跳过一块?蛇游戏 - 为什么蛇跳过一个瓷砖?
我不知道该怎么说,所以这是一个视频。 https://youtu.be/fxuEYsrIZMU
而不是只出现在边缘上,它跳过1到2块瓷砖。 这里是代码片段:
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);
}
宽度,高度是屏幕W和H 的身体是一个std::vector<sf::RectangleShape>
下面是完整的代码: https://pastebin.com/sr4Tbrin
的问题是在事实上,这些线路,但解决的办法是不正确:正确的值 - 分别为(身高+ 1) - (WIDTH + 1)。你提供的值将导致蛇跳过一个更多,即它将结束在第二个领域。 – KjMag
我可以知道为什么投票吗? @KjMag谢谢。 –
没问题。至于downvote,我认为如果你将这个问题作为对你的主要问题的评论,而不是问题的答案,它会更加明显。 – KjMag