SFML setFillColor не может заполнить цвет 2D-массива sf :: RectangleShape - PullRequest
0 голосов
/ 11 декабря 2018

В школе я получил задание сделать игру в крестики-нолики.У меня есть сетка, которая состоит из 9 квадратов (3 сверху, 3 посередине и 3 снизу), нарисованных на фоне.Таким образом, сетка получается.Но настройка цвета не работает.В моем конструкторе GridLayout я запрашиваю sf::Color, например:

GridLayout(sf::RenderWindow& window, const sf::Color& fillColor, const int& spacing):
// some init
{
    setFillColor(fillColor);
}

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

sf::RectangleShape[3][3] rectangleShapes;

Чтобы установить цвет заливки для всех 9 фигур, я создал следующую функцию:

void GridLayout::setFillColor(const sf::Color& fillColor) {
    for (auto& row : rectangleShapes) 
        for (auto& rect : row) 
            rect.setFillColor(fillColor);


}

Но, как показано на следующем изображении, он по-прежнему выглядит белым, хотяsf::Color::Black пройдено.

enter image description here

1 Ответ

0 голосов
/ 12 декабря 2018

Я разобрался, как это исправить.По какой-то причине цвет сбрасывается на белый в соответствии с порядком вызова этих двух функций:

GridLayout::GridLayout(sf::RenderWindow& window, const sf::Color& fillColor, const int& spacing):
//init
{       
    setFillColor(fillColor);
    createGridLayout();
}

Должно быть:

{       
    createGridLayout();
    setFillColor(fillColor);

}
...