【发布时间】:2016-01-06 01:36:08
【问题描述】:
所以这可能是一些琐碎的事情,但我真的需要知道为什么它会以这种方式发生以及我该如何改变它。
所以我今天开始学习 SFML,我正在阅读 SFML 游戏开发电子书,看到了非常有趣且编写良好的代码。我浏览了有关 SFML 的教程并开始学习语言,因为我了解了它应该如何工作的一般概念。
所以我想记住新的关键字、构造函数、方法,同时也让我的代码井井有条 - 使用我学到的东西来保持它的整洁和易于编辑、调试。
我的第一个代码是显示 Window,我以两种方式创建了相同的代码,通常将所有内容都放在 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;
};
【问题讨论】: