如何让SDL 1.2显示基于定时事件的错误消息?

时间:2014-01-24 01:35:54

标签: sdl

好的,所以我使用SDL 1.2,并使用它创建了2个物体的行星模拟,但是我接近结束,并且有一个问题我似乎无法解决。在我的程序中,SDL从文本文件中读取坐标,然后使用该文本文件在屏幕上显示主体。所以我的程序可以结束以下两种方式之一。可能发生的是这两种情况 a)两个实体发生碰撞,如果发生这种情况,文本文件将读取坐标“8888 8888 8888 8888”(x1,y1,x2,y2) b)两个实体中的一个离开屏幕,如果发生这种情况,文本文件将读取坐标“9999 9999 9999 9999”(x1,y1,x2,y2)。 无论如何,所以我希望程序做的是当它看到那些坐标时,关闭SDL,并将图片粘贴到包含错误消息的屏幕上。到目前为止我尝试的是:

 while (x11[x11.size() - 1] != 9999)
{
    //Start the frame timer
    fps.start();

    //If the user has Xed out the window
    if(event.type == SDL_QUIT)
    {
        //Quit the program
        quit = true;
    }

    //Move the dots
    myDot.move();
    MoDot.move2();

    //Fill the screen white
    SDL_FillRect( screen, &screen->clip_rect, SDL_MapRGB( screen->format, 0xFF, 0xFF,    0xFF ));

    c++;

    //Show the dots on the screen
    myDot.show();
    MoDot.show2();

    //Update the screen
    if(SDL_Flip(screen) == -1)
    {
        return 1;
    }

    //Capping the frame rate
    if(fps.get_ticks() < 1000 / FRAMES_PER_SECOND)
    {
        SDL_Delay((1000 / FRAMES_PER_SECOND) - fps.get_ticks());
    }
}

正如你所看到的那样,在while循环中,只要x11(坐标x1)不是9999,while循环就会继续运行,但是会发生什么,程序会立即关闭!换句话说,程序会在一秒内关闭,但是如果我将该行更改为     while(quit == false) 模拟显示,当它达到8888或9999协调点时,它就会崩溃。 所以我的问题是 当屏幕上显示的坐标为8888/9999时,如何使模拟停止(如果我做了以前做过的事,那么程序会停止immediatley)

0 个答案:

没有答案