Как вы сравниваете векторы на карте для sfml? - PullRequest
2 голосов
/ 05 апреля 2020

Я пытаюсь создать массив объектов, которые я называю плитками для игры. Я использую следующую карту для отслеживания их местоположения с использованием объектов Vector2i и объектов мозаики:

std::map<sf::Vector2i, Tile, compareVector2i> allTiles;

Я прочитал в Интернете, что, поскольку объект Vector2i не имеет возможности сравнить два из них, я должен создайте его самостоятельно и добавьте на карту, поэтому я создал следующую структуру и функцию для их сравнения

struct compareVector2i {
    bool operator()(const sf::Vector2i& a, const sf::Vector2i& b) const {
        return a.x < b.x || a.y < b.y;
    }
};

, но он не печатает массив правильно, когда я oop пролегаю по плиткам следующим образом:

    for(int i = 0; i < 100; i++){
        for(int j = 0; j < 100; j++){.   //array of 100x100

        }
    }

Я заметил, что когда я меняю функцию сравнения, меняется и печать плиток. Я не думал, что это будет проблемой, потому что, поскольку каждый вектор отличается, когда я получаю доступ к определенному c, я должен получить назначенный тайл. Я не профессионал в картах, поэтому я предполагаю, что функция сравнения используется для поиска значений по ключам?

Кто-нибудь знает, как это исправить?

...