用“变换”移动物体

你要让物体在屏幕上“动起来”。飞船需要飞行,彗星需要旋转、漂移和变换大小。旋转、平移和伸缩操作需要很多数学知识,为此Allegro内置了一批“变换”函数。

你在绘制物体时只需要以原点为参照画出它就行了。原点位于屏幕的左上角,坐标为(0, 0),横着的是X轴,竖着的是Y轴。假设你要绘制飞船,可以先用变换函数把原点移动到飞船将在屏幕中出现的位置,然后根据飞船的旋转角度旋转原点,最后在原点处画出飞船即可。

可以像这样在屏幕上绘制飞船:

  1. void draw_ship(Spaceship* s)
  2. {
  3. ALLEGRO_TRANSFORM transform;
  4. al_identity_transform(&transform);
  5. al_rotate_transform(&transform, DEGREES(s->heading));
  6. al_translate_transform(&transform, s->sx, s->sy);
  7. al_use_transform(&transform);
  8. al_draw_line(-8, 9, 0, -11, s->color, 3.0f);
  9. al_draw_line(0, -11, 8, 9, s->color, 3.0f);
  10. al_draw_line(-6, 4, -1, 4, s->color, 3.0f);
  11. al_draw_line(6, 4, 1, 4, s->color, 3.0f);
  12. }