Почему окно игры закрывается через определенное время?

Почему окно, которое создано SDL Game Library автоматически закрываются по истечении определенного времени.
Я знаю причину SDL_Delay() функция, но если не использовать эту функцию, в игре появится ошибка времени выполнения.

Как я могу создать окно, которое непрерывно работает без появления в определенный период времени?

Мой код (самый простой код):

SDL_Window *window;
SDL_Renderer *render;

int main(int argc, char* args[]){

if(SDL_Init(SDL_INIT_EVERYTHING) >= 0){
window = SDL_CreateWindow("Simple game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
if(window != 0){
render = SDL_CreateRenderer(window, -1, 0);
}

}else{
return 1;
}

SDL_SetRenderDrawColor(render, 0, 0, 0, 255);
SDL_RenderClear(render);
SDL_RenderPresent(render);

SDL_Delay(3000);
SDL_Quit();

return 0
}

0

Решение

Вы должны зацикливаться навсегда и вызывать функции экрана обновления SDL. Прочитайте учебники LazyFoo, найденные здесь: http://lazyfoo.net/SDL_tutorials

Или вот короткий код, чтобы вы начали:

#include <iostream>
#include "SDL/SDL.h"                    // basic SDL
#include <string>

const int       SCREEN_WIDTH    = 640;
const int       SCREEN_HEIGHT   = 480;
const int       SCREEN_BBP      = 32;   // bits per-pixel

SDL_Surface*    screen          = NULL; // display screen
SDL_Event       event;                  // grab eventsusing namespace std;

bool init() {

// initialize SDL
if(SDL_Init( SDL_INIT_EVERYTHING ) == -1)
return false;

//the screen image
screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT,
SCREEN_BBP, SDL_SWSURFACE );
if(!screen) {
cout << "error creating screen" << endl;
return false;
}
//Set the window caption
SDL_WM_SetCaption("Event Test", NULL );

return true;
}

int main(int argc, char* argv[])
{
try
{
// make sure the program waits for a quit
bool quit = false;

cout << "Starting SDL..." << endl;

// Start SDL
if(!init()) {
cout << "initialize error" << endl;
return false;
}

// main loop
while( quit == false )
{
if (SDL_PollEvent(&event))
{
// The x button click
if(event.type == SDL_QUIT)
{
//quit the program
quit = true;
}

}

// Fill the screen white
SDL_FillRect( screen, &screen->clip_rect, SDL_MapRGB(
screen->format, 0xFF, 0xFF, 0xFF ) );//Update screen
if(SDL_Flip(screen) == -1)
return -1;
}
}
catch (exception& e)
{
cerr << "exception caught: " << e.what() << endl;
return -1;
}

return 0;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]