-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);
}
WIDTH、HEIGHTは、画面W.あるとH. 体がstd::vector<sf::RectangleShape>
ここ は完全なコードです:https://pastebin.com/sr4Tbrin
問題が実際にこれらの行にありますが、解決策が正しくありません::
あなたが必要とする正しい値である - (WIDTH + 1)と - (HEIGHT + 1)それぞれ。あなたが入力した値は、スニークを1つ多くスキップさせます。つまり、2番目のフィールドに移動します。 – KjMag
私は理由がわからないのですか? @KjMagありがとうございます。 –
問題ありません。ダウンボートについては、この質問を答えではなく主題に関するコメントとして尋ねると、それがより目に見えるようになると思います。 – KjMag