好的,所以我使用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)