用“变换”移动物体
你要让物体在屏幕上“动起来”。飞船需要飞行,彗星需要旋转、漂移和变换大小。旋转、平移和伸缩操作需要很多数学知识,为此Allegro内置了一批“变换”函数。
你在绘制物体时只需要以原点为参照画出它就行了。原点位于屏幕的左上角,坐标为(0, 0),横着的是X轴,竖着的是Y轴。假设你要绘制飞船,可以先用变换函数把原点移动到飞船将在屏幕中出现的位置,然后根据飞船的旋转角度旋转原点,最后在原点处画出飞船即可。
可以像这样在屏幕上绘制飞船:
void draw_ship(Spaceship* s)
{
ALLEGRO_TRANSFORM transform;
al_identity_transform(&transform);
al_rotate_transform(&transform, DEGREES(s->heading));
al_translate_transform(&transform, s->sx, s->sy);
al_use_transform(&transform);
al_draw_line(-8, 9, 0, -11, s->color, 3.0f);
al_draw_line(0, -11, 8, 9, s->color, 3.0f);
al_draw_line(-6, 4, -1, 4, s->color, 3.0f);
al_draw_line(6, 4, 1, 4, s->color, 3.0f);
}