c++ - 房间在 SFML(地牢爬行者)中不断重叠
问题描述
请帮助我无法解决我的代码有什么问题。我正在使用 SFML 库。我正在尝试对其进行故障排除一段时间,但房间不断重叠。
std::vector<sf::RectangleShape>rooms;
sf::RectangleShape start;
int roomSize = 100;
float gap = 5.f;
int roomCount = 5;
void generateDungeon()
{
int randomDir;
int randomRoom;
for(int i = 0; i < rooms.size(); i++)
{
if(roomCount != 0){
randomRoom = rand() % rooms.size();
randomDir = rand() % 4 + 1;
roomCount--;
}
if(randomDir == 1 && roomCount != 0){
sf::Vector2f position = rooms[randomRoom].getPosition() + sf::Vector2f(0, roomSize + gap);
if(rooms[rooms.size() - i].getPosition() != position){
sf::RectangleShape temp;
temp.setSize(sf::Vector2f(roomSize, roomSize));
temp.setFillColor(sf::Color::White);
temp.setPosition(position);
rooms.push_back(temp);
}
}
else if(randomDir == 2 && roomCount != 0){
sf::Vector2f position = rooms[randomRoom].getPosition() + sf::Vector2f(0, -(roomSize + gap));
if(rooms[rooms.size() - i].getPosition() != position){
sf::RectangleShape temp;
temp.setSize(sf::Vector2f(roomSize, roomSize));
temp.setFillColor(sf::Color::White);
temp.setPosition(position);
rooms.push_back(temp);
}
}
else if(randomDir == 3 && roomCount != 0){
sf::Vector2f position = rooms[randomRoom].getPosition() + sf::Vector2f(roomSize + gap, 0);
if(rooms[rooms.size() - i].getPosition() != position){
sf::RectangleShape temp;
temp.setSize(sf::Vector2f(roomSize, roomSize));
temp.setFillColor(sf::Color::White);
temp.setPosition(position);
rooms.push_back(temp);
}
}
else if(randomDir == 4 && roomCount != 0){
sf::Vector2f position = rooms[randomRoom].getPosition() + sf::Vector2f(-(roomSize + gap), 0);
if(rooms[rooms.size() - i].getPosition() != position){
sf::RectangleShape temp;
temp.setSize(sf::Vector2f(roomSize, roomSize));
temp.setFillColor(sf::Color::White);
temp.setPosition(position);
rooms.push_back(temp);
}
}
}
}
请帮助我无法解决我的代码有什么问题。我正在使用 SFML 库。
解决方案
推荐阅读
- c# - 更改 C# 动态类型的属性值
- prometheus - 如何重构普罗米修斯查询
- javascript - 如何遍历文本字段并使用 javascript 连接结果
- c# - 从字符串中删除非数字字符并将数字作为 int 转换为数组
- python-3.x - 如果另一个列值在列表或集合中,则使用二进制值填充 pandas 数据框中的新列
- c++ - 未初始化的 C++ 结构的行为
- blogdown - 使用 blogdown 自定义 anchor-sections.css
- python - 如何不对标头中的一些相关 ID 的值进行硬编码以获得所需的响应?
- typescript - 使用带有打字稿的特定文件夹中的@types
- terraform - 如何处理 eks 假设策略的列表