void loop() { while(!kb.keys[SDLK_ESCAPE] && !kb.exit) { check_timeouts(); handle_events(); //handles input, then moves blit_all(); SDL_Delay(1000/BASE_FPS); } }
int main(int argc, char *argv[]) { int i, done = 0, flip = 0; SDL_Init(SDL_INIT_VIDEO); atexit(SDL_Quit); if ((IMG_Init(IMG_INIT_PNG) & IMG_INIT_PNG) == 0) { fprintf(stderr, "Failed to init PNG support.\n"); exit(1); } Uint32 flags = SDL_HWSURFACE; for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-fullscreen") == 0) { flags |= SDL_FULLSCREEN; SDL_ShowCursor(SDL_DISABLE); } if (strcmp(argv[i], "-doublebuf") == 0) { flags |= SDL_DOUBLEBUF; } if (strcmp(argv[i], "-flip") == 0) { flip = 1; } } SDL_Surface *screen = SDL_SetVideoMode(SCRN_WIDTH, SCRN_HEIGHT, SCRN_DEPTH, flags); if (screen == NULL) { fprintf(stderr, "Failed to set video mode.\n"); exit(1); } SDL_WM_SetCaption(TITLE, *argv); SDL_RWops *rw1 = SDL_RWFromMem(moire1_start, moire1_size); SDL_RWops *rw2 = SDL_RWFromMem(moire2_start, moire2_size); SDL_Surface *surface1 = IMG_LoadTyped_RW(rw1, 1, "png"); SDL_Surface *surface2 = IMG_LoadTyped_RW(rw2, 1, "png"); SDL_SetAlpha(surface1, SDL_RLEACCEL | SDL_SRCALPHA, 0); SDL_SetAlpha(surface2, SDL_RLEACCEL, 0); i = 0; while (!done) { static SDL_Event event; if (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: done = 1; break; case SDL_KEYDOWN: done = event.key.keysym.sym == SDLK_ESCAPE; break; } } else { int ms = SDL_GetTicks(); blit_all(screen, surface1, surface2, SPEED * ms / 1000); SDL_UpdateRect(screen, 0, 0, 0, 0); if (flip) { SDL_Flip(screen); } SDL_Delay(10); } } return 0; }