Перемещение змейки в игре змейка с помощью SFML C ++ - PullRequest
2 голосов
/ 03 августа 2020

Я пытаюсь создать игру-змейку с SFML + CPP. На данный момент я хочу сосредоточиться на столкновении, поэтому, когда змея уходит влево, она должна вернуться в правую часть экрана. С помощью подобных вопросов мне удалось заставить змею двигаться частично правильно влево и вверх (координаты x и y) (частично потому, что при движении влево она прыгает, как 20 пикселей, выходя из правой стороны). Вот код, который работает, как описано, основная проблема - правая и нижняя части.

void Game::update()
{
    sf::Vector2f movement(0.0f, 0.0f);
    if (movingUp) { movement.y -= 0.1f;    }
    if (movingDown) { movement.y += 0.1f;  }
    if (movingLeft) { movement.x -= 0.1f;  }
    if (movingRight) { movement.x += 0.1f; }

    for(auto& snakey : snake){
        if (snakey.getPosition().x <= 0 ) { movement.x = myWindow.getSize().y; }
        if (snakey.getPosition().y <= 0 ) { movement.y = myWindow.getSize().x; }
        if (snakey.getPosition().x + snakey.getLocalBounds().width >= myWindow.getSize().x )  { movement.y = 0.0f;}
        if (snakey.getPosition().y + snakey.getLocalBounds().height >= myWindow.getSize().y ) { movement.x = 0.0f;}
        snakey.move(movement);
    } /*If the whole background would be a map of vectors i could technically push the snake vector from head to tail (stack) onto the beginning?*/
}

Заранее спасибо. Edit Кажется, я пропустил вопрос напрямую, так что вот он. Как переместить змею по назначению (go влево, выйти из правого и c)?

...