Esempio n. 1
0
int main(int argc, char **argv)
{
    SDL_Surface *screen, *background,
                *pause_text, *press_enter_text, *game_over_text;

    const SDL_VideoInfo *video_info;
    Uint32 frame_start, frame_end = 0, game_frame_end = 0;

    systems_init();

    screen = SDL_SetVideoMode(800, 600, 0, SDL_HWSURFACE|SDL_DOUBLEBUF);
    video_info = SDL_GetVideoInfo();

    create_images(&press_enter_text, &pause_text, &game_over_text, &background);
    create_entities();

    for(;;) {
        start_frame(&frame_start, &frame_end);

        if(check_SDL_events())
            break;

        draw_background(background, screen, video_info);

        update_entities(game_frame_end  );

        if(is_paused()) {
            if(is_game_over()) {
                draw_centered(screen, video_info, game_over_text);
            } else if(is_started()) {
                draw_centered(screen, video_info, pause_text);
            } else {
                draw_centered(screen, video_info, press_enter_text);
            }
        }

        SDL_Flip(screen);

        finish_frame(&frame_start, &frame_end, &game_frame_end);
    }

    SDL_FreeSurface(background);
    SDL_FreeSurface(pause_text);
    SDL_FreeSurface(press_enter_text);

    systems_shutdown();
    return 0;
}
Esempio n. 2
0
	void Game::run(){

		bool game_running = true;

		Timer fps;
		SDL_Event event;
		while( game_running ){
			// Start timing fps
			fps.start();

			SDL_PollEvent(&event);
			if(event.key.repeat != 1){

				switch(event.type){
					case SDL_QUIT:
						game_running = false;
						break;
					case SDL_KEYDOWN:
						m_keys[SDL_KEY_CONVERT(event.key.keysym.sym)] = 1;
						break;
					case SDL_KEYUP:
						m_keys[SDL_KEY_CONVERT(event.key.keysym.sym)] = 0;
						break;
				}
				handle_input();
			}

			// Only update if game is running
			if( m_current_state == state_game_running ){
				update_entities();
			}
			draw();

			// Lock framerate
			if( fps.get_ticks() < g_max_ticks ){
				SDL_Delay( ( g_max_ticks ) - fps.get_ticks() );
			}
		}
	}