SFML中矩形制成的Tilegrid给出了转换错误 我学习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(); } } #包括 int main() { int xWindow=1280;//除以40像素,等于32个平铺的宽度 int yWindow=720;//除以40像素,等于18个瓷砖的高度 浮点数组[32][18]={0}; sf::RenderWindow窗口(sf::VideoMode(xWindow,yWindow),“Title”);//32和18 while(window.isOpen()) { ////////网格变量///////// int xFactor=32; int-yFactor=18; int size=40; ////////事件//////// ////////画//////// window.clear(); 对于(int i=0;i

SFML中矩形制成的Tilegrid给出了转换错误 我学习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(); } } #包括 int main() { int xWindow=1280;//除以40像素,等于32个平铺的宽度 int yWindow=720;//除以40像素,等于18个瓷砖的高度 浮点数组[32][18]={0}; sf::RenderWindow窗口(sf::VideoMode(xWindow,yWindow),“Title”);//32和18 while(window.isOpen()) { ////////网格变量///////// int xFactor=32; int-yFactor=18; int size=40; ////////事件//////// ////////画//////// window.clear(); 对于(int i=0;i,c++,type-conversion,sfml,tile,C++,Type Conversion,Sfml,Tile,一个位置是两个数字,一个x和y坐标。数组[i*size][j*(size)]只是二维浮点数组中的一个数字 我会选择这样的 block.setPosition(i*size, j*size); 一个位置是两个数字,一个x和y坐标。数组[i*size][j*(size)]只是二维浮点数组中的一个数字 我会选择这样的 block.setPosition(i*size, j*size); 谢谢,我已经编辑了我的代码,所以现在我有一个x参数和y参数,如下所示:block.setPosition((ar

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

我会选择这样的

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

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

我会选择这样的

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

谢谢,我已经编辑了我的代码,所以现在我有一个x参数和y参数,如下所示:block.setPosition((array[I]*size),(array[j]*size));我将我的size变量改为float。其余代码保持不变。测试时,我收到一条错误消息,告诉我:非法,左操作数类型为'float[18]’有什么办法可以解决这个问题吗?Thanks@RasmusH为什么您认为首先需要数组?错误是因为您有
浮点数组[32][18]
,所以
数组[0]
是第一个大小为18的浮点数组。
数组[1]
是第二个大小为18的浮点数组。
数组[0][0]
将是大小为18的第一个浮点数组中的第一个浮点。我得到了在浮点数组中移动的理论,这就是为什么我在for循环中使用0-17和0-31。我的想法是,我想制作一个蛇游戏,蛇在瓷砖中移动,我认为数组可能是一种很好的方法,因此我还想使用矩形来形成由于tilegrid设置正确,我的计划是如果蛇头在数组中该位置的顶部,则将tile的颜色更改为红色。我想使用“if”来检查这一点并检查数组值。如果0->render backgroundtile,如果1->render snakehead等。谢谢,我已经编辑了我的代码,所以现在我有一个x参数和y参数,如下所示:block.setPosition((数组[I]*大小),(数组[j]*大小));我将size变量更改为float。其余代码保持不变。测试时,我收到一条错误消息,告诉我:非法,左操作数类型为'float[18]’有什么办法可以解决这个问题吗?Thanks@RasmusH为什么您认为首先需要数组?错误是因为您有
浮点数组[32][18]
,所以
数组[0]
是第一个大小为18的浮点数组。
数组[1]
是第二个大小为18的浮点数组。
数组[0][0]
将是大小为18的第一个浮点数组中的第一个浮点。我得到了在浮点数组中移动的理论,这就是为什么我在for循环中使用0-17和0-31。我的想法是,我想制作一个蛇游戏,蛇在瓷砖中移动,我认为数组可能是一种很好的方法,因此我还想使用矩形来形成e平铺。由于平铺网格设置正确,我的计划是,如果蛇头位于数组中该位置的顶部,则将平铺的颜色更改为红色。我想使用“如果”进行检查,并检查数组值。如果0->渲染背景平铺,如果1->渲染蛇头等。