Пример #1
0
void loop()
{
	while(!kb.keys[SDLK_ESCAPE] && !kb.exit) {
		check_timeouts();
		handle_events(); //handles input, then moves
		blit_all();
		SDL_Delay(1000/BASE_FPS);
	}
}
Пример #2
0
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;
}