Один раз за цикл прорисовки вы должны:
- очистить экран
- нарисовать фон
- нарисовать растровые изображения поверх фона
- переверните дисплей
Например:
al_clear_to_color(al_map_rgb(0,0,0));
al_draw_bitmap(background, 0, 0, NULL);
al_draw_bitmap(apple,0,0,NULL);
al_draw_bitmap(snake,0,0,NULL);
al_flip_display();
Обратите внимание, что вы должны вызывать al_flip_display
только один раз за цикл рисования , после того как вы нарисовали вседля этого цикла.al_clear_to_color
должен быть вызван первым, так как он уничтожит все, что вы нарисовали.В приведенном вами примере вы рисуете свое яблоко и змею в одном и том же месте, поэтому я не удивлюсь, если один из них блокирует часть другого.
Кроме того, вы, вероятно, не хотите придерживатьсяваш цикл рисования в while(true)
как частота кадров будет неограниченным.То есть он будет работать так быстро, как это разрешено, и частота кадров не будет постоянной.Типичный подход - использовать управляемый событиями цикл рисования .