Exemplo n.º 1
0
void World::run()
{
    m_screen->init( "Phys2D" );
    m_grid->init( vec2d { -20, -20 }, vec2d { 800, 600 }, 40 );
    
    const double fps = 100;
    const double dt = 1 / fps;
    double accumulator = 0;
    
    double frame_start = get_time();
    
    
    //Positional correction test (inside circle)
    Circle test1 ( vec2d { 300, 300 }, 50 );
    Rectangle test2 ( vec2d { 310, 300 }, 10, 10 );
    Circle test3 ( vec2d { 300, 310 }, 10 );
    test3.set_colour( 0xFFFF0000 );
    test2.set_colour( 0xFFFFFF00 );
    m_grid->add( &test1 );
    //m_grid->add( &test2 );
    m_grid->add( &test3 );
    m_grid->add( &test2 );
    
    
    //Positional correction test (inside Rectangle) 
    Rectangle test4 ( vec2d { 500, 300 }, 50, 70 );
    Circle test5 ( vec2d { 500, 320 }, 10 );
    Rectangle test6 ( vec2d { 510, 300 }, 10, 10 );
    m_grid->add( &test4 );
    m_grid->add( &test5 );
    m_grid->add( &test6 );
    
    Circle test7 ( vec2d { 100, 500 }, 100, 1, vec2d { 200, -200 } );
    m_grid->add( &test7 );
    
    while( m_screen->is_running() )
    {
        const double current_time = get_time();
        accumulator += current_time - frame_start;
        frame_start = current_time;
        
        if( accumulator > 0.2 )
        {
            accumulator = 0.2;
        }
        m_screen->clear();
        m_screen->handle_events();
        while( accumulator > dt )
        {
            accumulator -= dt;
            m_grid->update( dt );
        }
        draw_entities();
        m_screen->render();
    }
    
    m_screen->quit();
}
Exemplo n.º 2
0
// Render the game to the screen
void update_screen(void) {
	// Locals
	int elapsed;

	frame++;
	draw_backdrop();
	draw_entities();
	draw_overlay();

	// Lock the refresh rate to 60 FPS
	SDL_Flip(screen);
	elapsed = frame_start_time - SDL_GetTicks();
	if (elapsed < FRAME_TIME) {
		SDL_Delay(FRAME_TIME - elapsed);
	}
}
Exemplo n.º 3
0
 void draw_playing_field(sf::RenderWindow & win, level const & l)
 {
     auto top_left_pos = top_left_window_position(l);
     draw_entities(win, top_left_pos, l);
     draw_chip(win, top_left_pos, l);
 }