所以它可能是一个trival,但我真的需要知道它为什么发生的方式,以及如何改变它。SFML - sf :: RenderWindow,划分文件
因此,我今天开始学习SFML,并且正在阅读SFML游戏开发电子书,并看到了非常有趣且写得很好的代码。我学习了关于SFML的教程,并开始学习语言,因为我理解它应该如何工作的一般想法。
所以,我想记住新的关键字,构造函数,方法,但也使我的代码组织得很好 - 使用我学会了保持清洁和易于编辑,调试。
我的第一个代码是显示窗口,我用两种方式创建了相同的代码,通常将所有内容都放到main函数中并分开。事情是,只要我不会关闭第一个窗口,第二个窗口显示小于秒,程序关闭。
这可能是因为析构函数在打开后调用并添加更多函数来保持对象繁忙是好的方法,但我想理解它。当我学习客观编程时,我不是很了解最后一件事。对象的工作方式。在创建它们之后,我正在使用它们执行某些任务,但是当完成时它们将被删除,有时候我再次需要它们。我只是想了解它是如何工作的,并找到真正简单快速的解决方案/想法,使其工作,只要我想要它。
代码:
第一个程序:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow mainWindow(sf::VideoMode(800,600),"Main Window");
while(mainWindow.isOpen())
{
sf::Event openEvent;
while(mainWindow.pollEvent(openEvent))
{
switch(openEvent.type)
{
case sf::Event::Closed:
mainWindow.close();
break;
}
mainWindow.clear();
mainWindow.display();
}
}
}
第二套方案:
的main.cpp
#include <SFML/Graphics.hpp>
#include "Game.cpp"
int main()
{
Game game;
game.run();
}
Game.cpp
#include "Game.h"
Game::Game()
{
sf::RenderWindow mainWindow(sf::VideoMode(800,600),"Main Window");
}
void Game::run()
{
while(mainWindow.isOpen())
{
sf::Event openEvent;
while(mainWindow.pollEvent(openEvent))
{
switch(openEvent.type)
{
case sf::Event::Closed:
mainWindow.close();
break;
}
}
mainWindow.clear();
mainWindow.display();
}
}
Game.h
class Game
{
public:
Game();
void run();
private:
sf::RenderWindow mainWindow;
};
谢谢你的回答:) – Advent