SFML中由RectangleShape制成的Tilegrid给出转换错误

时间:2019-02-25 20:55:59

标签: c++ type-conversion sfml tile

我正在学习C ++,并且想学习图形学。我正在使用SFML,并且正在尝试制作蛇游戏。我想使用矩形形状并通过引用一个数组和系数40(我的tileize)来更新每个矩形的位置。我相信我正确使用了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 :(得分:2)

位置是2个数字,x和y坐标。 array[i * size][j * (size)]只是2d浮点数组中的一个数字。

我会选择这样的东西

block.setPosition(i*size, j*size);