尝试使用矢量在 sfml 中创建图块地图
Trying to create a Map of Tiles in sfml using a vector
如何使用SFML和向量头创建精灵向量?我像这样开始向量
vector<sf::Sprite> test;
我正在尝试做一个push_back(),但我不知道我需要在"()"中放入什么。
无论如何,我的向量将是 41x31,所以有一种方法可以不做类似的事情
vector<vector<sf::Sprite> > test (41,vector<sf::Sprite>(31,??))
?
我正在使用它来创建瓷砖地图,如果有人有更好的主意,我将不胜感激
编辑:
我仍然有错误,这是我的代码
vector<vector<int> > mapc (5,vector<int>(5,1));
sf::Sprite mapa[5][5];
void fmap() {
mapc[0][0] = 1; mapc[0][1] = 1; mapc[0][2] = 1; mapc[0][3] = 1; mapc[0][4] = 1;
mapc[1][0] = 1; mapc[1][1] = 0; mapc[1][2] = 0; mapc[1][3] = 0; mapc[1][4] = 1;
mapc[2][0] = 1; mapc[2][1] = 0; mapc[2][2] = 1; mapc[2][3] = 0; mapc[2][4] = 1;
mapc[3][0] = 1; mapc[3][1] = 0; mapc[3][2] = 0; mapc[3][3] = 0; mapc[3][4] = 1;
mapc[4][0] = 1; mapc[4][1] = 1; mapc[4][2] = 1; mapc[4][3] = 1; mapc[4][4] = 1;
sf::Image w;
w.LoadFromFile("w.png");
sf::Image f;
f.LoadFromFile("f.png");
unsigned int i,j;
for(i=0;i<mapc.size();i++) {
for(j=0;j<mapc[i].size();j++) {
if(mapc[i][j] == 1) { sf::Sprite teste(w); }
else { sf::Sprite teste(f); }
mapa[i][j] = teste;
}
}
// test.push_back(teste);
}
它说
"'teste'未在此范围内声明"
编辑:实际上我撒谎了,如果你知道地图的确切大小,那么你可以使用
sf::Sprite map[41][31];
除非您的映射要在运行时更改其大小,否则您应该在堆栈上创建一个数组。
sf::Sprite temp; //used to initialize the map
map = new sf::Sprite[num_rows];
for(int i = 0; i < num_rows; i++){
map[i] = new sf::Sprite[num_cols];
for(int j = 0; j < num_cols; j++){
map[i][j] = temp;
}
}
然后,您需要再次运行地图以对其进行初始化。 如果你不能做到这一点,你需要使用一个向量,那么你可以对向量做类似的事情。
sf::Sprite temp; //used to initialize the map
vector<vector<sf::Sprite> > map;
vector<sf::Sprite> row;
map.resize(0);
row.resize(0);
for(int i = 0; i < num_cols; i++){
row.push_back(temp);
}
for(int i = 0; i < num_rows; i++){
map.push_back(row);
}
然后,您的地图可作为
地图[x][y]
无论哪种情况。
希望这有帮助
你只需要创建一个精灵并将其放入向量中。
sf::Sprite sprite;
test.push_back(sprite);
简单易行!
std::vector
会自行调整大小,因此您无需担心大小调整。
相关文章:
- 在 c++ 中,有一种方法可以创建一个包含地图作为值的树状地图?
- 无法创建带有布尔值和矢量的地图
- 我可以动态创建新地图并作为函数参数传递吗?
- C++ 如何为地图创建浅拷贝构造函数
- 如何在给定任意数量的整数的情况下创建一个唯一键?并使用该键存储,然后从地图中查找
- 从两个地图创建set_difference矢量
- 如何从OpenGL 4.5中的单个Cube地图纹理中创建Cube地图数组纹理
- 如何在两个包含指针的地图中创建列表
- std::unordered_map 如何释放使用 malloc 创建的结构.是否需要对地图进行 2 次查询
- 是 std::make_pair 在将对象添加到地图时创建副本
- Boost HANA:从集合创建地图和默认值
- 如何以自定义类/比较器作为密钥创建地图
- 使用struct成员抛出bad_alloc创建地图
- 从C 中的MAP的随机子集创建新地图
- 从无序地图创建以自定义类作为键的地图.但是,由于const而无法使用的要素
- 在Cython的循环中创建C 地图
- C Boost ::如何从顶点描述符创建地图
- 如何在swig中创建地图
- 使用字符串**创建地图。我想我走错了路
- 如何创建地图的地图