グラフィックに SDL を使用して C++ で RTS を作成しています。
ゲームを実行するたびに、エラーやコンパイラのデバッグ ウィンドウで何も表示されずにクラッシュします。すぐにまたは一貫してクラッシュするわけではなく、クラッシュするのに 10 秒かかることもあれば、クラッシュするのに 2 分かかることもあります。
(メイン関数の最後で)戻り値をいじってみると、クラッシュしていないことがわかりましたが、戻り値が変更したものと一致していたため、終了していました。
私が持っている唯一の理論は、私のポーリング イベント ループが故障しており、プログラムが終了するはずのないときに終了するように指示しているということです。
これが私のゲーム ループ内に含まれるイベント ループです。
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;
}
}
マウスが動いたりクリックしたりすると、終了するのが混乱する可能性はありますか? タイルごとに必要なもののみを表示するため、ラムが過負荷になっているとは思いません。
私のコンパイラ、VisualC++ が台無しになっている可能性もありますか?