1

我开始使用 SFML 和 C++ 创建游戏。但是,我有一个问题。我有基本的骨架类代码,但由于某种原因,当我创建一个窗口(sf::Window)时,我立即崩溃了!此代码不包含任何事件检查代码,但它确实包含并且仍然崩溃;此外,显然,如果由于缺乏事件检查,它应该需要几秒钟才能崩溃。当然,一旦我看到窗口,我会添加它。

#include <iostream>
#include <windows.h>
#include <SFML/Window.hpp>
#include "GameBase.h"
#include "Character.h"
#include "GameStart.h"

using namespace std;
using namespace sf;

int main() {
    GameStart::GameStart();
    Clock timer;
    cout << "Started." << endl;

    Window GameWindow(VideoMode(640, 480),"Basic window");

    while (1) {
        Sleep(0.5f);
    }
    return 0;
}

我知道这不是计时器、GameStart 或任何其他个人包含文件。

4

2 回答 2

1

Code::Blocks 12.11 附带 MinGW GCC 4.7.1 TDM 编译器,它与官方下载页面上提供的二进制文件不兼容,因此除非您使用新编译器重新编译 SFML 1.6,否则事情将无法解决。

除此之外,您还应该阅读SFML FAQ 的这一部分

于 2013-02-16T12:56:45.590 回答
0

我试过了,它没有问题:

#include <iostream>
#include <SFML/Window.hpp>

int main() {
    std::cout << "Started." << std::endl;

     sf::Window gameWindow( sf::VideoMode(640, 480),"Basic window");

     while (gameWindow.IsOpened()) {
         sf::Event event;
        while (gameWindow.GetEvent(event)) {

            if (event.Type == sf::Event::Closed)
                gameWindow.Close();
        }
    }
    return EXIT_SUCCESS;
}

我替换while(1)为 while(gameWindow.IsOpened())并添加了对关闭按钮的支持。这允许删除此处不相关的 windows 标头。

您应该尝试在调试模式下编译和执行它。它可能会帮助您理解问题。

此外,当您的代码不起作用时。我建议评论所有不相关的内容(在这个例子中:GameStart::GameStart();、、Clock timer;...),看看它是否有效。

于 2013-02-17T11:01:44.147 回答