我在游戏中添加背景时遇到问题。我的代码看起来像这样:
while (true)
{
al_draw_bitmap(background, 0, 0, NULL);
al_flip_display();
some code(...);
al_draw_bitmap(snake,0,0,NULL);
/*drawing my snake's tail*/
al_clear_to_color(al_map_rgb(0,0,0));
al_draw_bitmap(apple,0,0,NULL);
al_flip_display();
}
我大部分时间都看到了苹果和黑屏。 我一直在改变代码中某些行的顺序,并且这些组合都没有工作(最好的情况是当我有可见的蛇和背景,但没有苹果)。 在添加背景之前,我的蛇的尾巴有时会消失,但它不是很明显,除此之外,一切似乎都没问题。 任何人都知道如何正确添加背景? 或者也许这是我电脑的错误?
答案 0 :(得分:3)
每个绘制循环一次,你应该:
例如:
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)
中,因为帧速率不受约束。也就是说,它将以允许的速度运行,并且帧速率将不一致。典型的方法是使用event-driven draw loop。