c++ - SFML 中由 RectangleShape 制成的 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();
}
}
我在想 setPosition 只接受浮点数或向量作为输入,但如果我没记错的话,你不能在除整数之外的任何数组中移动吗?
如何在 SFML C++ 中建立一个像这样的简单网格?
感谢您的任何回答!
解决方案
一个位置是 2 个数字,一个 x 和 y 坐标。array[i * size][j * (size)]
只是二维浮点数组中的一个数字。
我会选择这样的东西
block.setPosition(i*size, j*size);
推荐阅读
- rust - Rust“由于需求冲突(E0495)而无法推断出适当的生命周期”
- laravel - 如何在 laravel 6 中安装干预/图像
- firebase - 我无法使用谷歌登录包构建 ios
- python - for循环中的“打开”是python中的安全方法吗?
- python-3.x - 在 python networkx 中创建与主图具有相同边样式/宽度的节点类型子图
- algorithm - 使用布尔数组对数组进行排序
- c++ - 为什么最后一个推回对象的字段到向量中会转移到向量的其他对象?
- spring - Spring Boot 应用程序我无法从 oracle 数据库中获取数据,它在邮递员中返回 []
- javascript - 如何通过 socket.io 将图像发送到服务器?
- firefox-addon-webextensions - 如何在控制台中访问由内容脚本创建的全局变量?