我的sfml项目在大约10秒后崩溃

时间:2017-09-17 13:03:55

标签: c++ sfml

我在c ++中的sfml项目有问题。编译并运行这个简单的代码后,我开始在窗口中使用我的鼠标(代码是一个非常简单的寻路算法,在这里,我点击," ch"纹理去的地方并且在aprox之后。窗口停止响应10秒左右。程序没有崩溃的唯一时间是我在调试模式下运行它。我不久前有一个更大的项目有这个问题,但由于这个问题,我放弃了它。我相信程序崩溃与使用鼠标有关,因为在较大的项目中,我曾经以同样的方式启动和崩溃,我也使用了sfml鼠标功能,并且在编译并在调试模式下运行时,它没有&#39崩溃我在Code :: Blocks版本:13.12编程,而SFML库我不确定是什么版本。我不知道为什么会这样,所以请问你这个问题的帮助。感谢:d

代码:

#include <SFML/Graphics.hpp>
#include <iostream>
#include <conio.h>
#include <windows.h>

using namespace std;
using namespace sf;

int main()
{
RenderWindow win(VideoMode(700,700),"test");

float x=10,y=10;
int mx=x,my=y;
int mxo,myo;

Texture t;
t.loadFromFile("char.png");
Sprite ch;
ch.setTexture(t);

ch.setPosition(x,y);

while(win.isOpen())
{
    win.clear();
    if(Mouse::isButtonPressed(Mouse::Left))
    {
        mx=Mouse::getPosition(win).x;
        my=Mouse::getPosition(win).y;
    }
        if(x!=mx)
        {
            if(mx>x)
            {
                x++;
            }
            if(mx<x)
            {
                x--;
            }
            Sleep(2);
        }
        if(y!=my)
        {
            if(my>y)
            {
                y++;
            }
            if(my<y)
            {
                y--;
            }
            Sleep(2);
        }

        ch.setPosition(x,y);
        win.draw(ch);
    win.display();
}
return 0;
}

1 个答案:

答案 0 :(得分:2)

您在主事件循环中阻塞了睡眠,并且没有处理事件。

这使操作系统认为该程序没有响应,它会告诉您

它实际上并没有崩溃。