Tilegrid из RectangleShape в SFML дает ошибку преобразования - PullRequest
0 голосов
/ 25 февраля 2019

Я изучаю C ++ и хочу заняться графикой.Я использую SFML и пытаюсь сделать игру со змеями.Я хочу использовать формы прямоугольника и обновлять положение каждого прямоугольника, ссылаясь на массив и фактор 40 (мой размер тайла).Я верю, что получил правильные циклы for, но изо всех сил пытаюсь использовать sf::setPosition.Это дает мне ошибку преобразования.Вот мой код:

#include <SFML\Graphics.hpp>

int main() 
{
    int xWindow = 1280; //Divided by 40 pixels, equals to a width of 32 tiles
    int yWindow = 720; //Divided by 40 pixels, equals to a height of 18 tiles
    float array[32][18] = { 0 };

    sf::RenderWindow window(sf::VideoMode(xWindow, yWindow), "Title"); //32 & 18

    while (window.isOpen())
    {
        ////////Grid variables/////////
        int xFactor = 32;
        int yFactor = 18;
        int size = 40;
        ////////Events////////

        ////////draw////////
        window.clear();

        for (int i = 0; i <= 31;i++)
        {
            for (int j = 0; j <= 17; j++)
            {
                sf::RectangleShape block(sf::Vector2f(size, size));
                block.setFillColor(sf::Color::Blue);
                block.setPosition(array[i * size][j * (size)]); //ERROR OCCURS HERE: cannot convert argument 1 from 'float' to 'const sf::Vector2f &'
                window.draw(block);
            }
        }

        ///////Display//////
        window.display();
    }
}

Я думаю, что setPosition принимает только float или vector в качестве входных данных, но если я не ошибаюсь, вы не можете перемещаться по массиву с чем-либо, кроме целых чисел?

Как настроить такую ​​простую сетку в SFML C ++?

Спасибо за любые ответы!

1 Ответ

0 голосов
/ 26 февраля 2019

Позиция - 2 числа, x и y кординат.array[i * size][j * (size)] - это всего лишь одно число в вашем массиве с 2-мя числами с плавающей точкой.

Вместо этого я бы выбрал что-то подобное

block.setPosition(i*size, j*size);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...