我正在使用SFML用于图形的C 中的基本游戏。它旨在使用具有功能的网格系统来确定每个正方形中应显示的内容。但是,编译器无法识别功能中窗口的引用。
为了保持更易于扩展的功能,要显示每种类型的地形,将坐标作为输入(可能不是正确的术语(。
好问题。SFML建议您在主函数中创建窗口,但是,如果要修改它,则可以通过参考将其传递。例如:
#include <SFML/Graphics.hpp>
void doSomething(sf::RenderWindow& window) {
sf::RectangleShape shape(sf::Vector2f(100, 100));
shape.setFillColor(sf::Color::Green);
shape.setPosition(50, 50);
window.draw(shape);
window.display();
}
int main() {
sf::RenderWindow window(sf::VideoMode(500, 500), "Test", sf::Style::Close);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
}
window.clear(sf::Color::Black);
//draw here
doSomething(window);
}
return 0;
}
您应该看看https://www.sfml-dev.org/tutorials/2.5/。具体来说,我会查看https://www.sfml-dev.org/tutorials/2.5/window-window.php