我正在使用 SDL 为图形制作 C++ 中的 RTS。
每次我运行游戏时,它都会在没有错误或编译器调试窗口中出现任何错误的情况下崩溃。它不会立即或持续崩溃,有时需要 10 秒才能崩溃,有时需要 2 分钟才能崩溃。
当我玩弄返回值时(在 main 函数的末尾),结果发现它并没有崩溃,而是退出,因为返回值与我将其更改为一致。
我唯一的理论是我的民意调查事件循环出现故障并告诉程序在不应该退出时退出。
这是我的事件循环,包含在我的游戏循环中:
if( SDL_PollEvent( &event ) )
{
if( event.type == SDL_MOUSEMOTION )
{
mx = event.motion.x;
my = event.motion.y;
}
if( event.type == SDL_MOUSEBUTTONDOWN )
{
if( hut.getselected() && hut.getplacable() )
{
hut.place( map );
}
}
if( event.type == SDL_QUIT )
{
quit = true;
}
switch( event.key.keysym.sym )
{
case SDLK_ESCAPE: quit = true; break;
}
}
是否有可能当鼠标移动或单击时,它会混淆它的退出?我认为 ram 也没有超载,因为它只显示它需要平铺的东西。
我的编译器 VisualC++ 是否也有可能搞砸了?