C++ 如何制作图形动画 (POO)

C++ How to animate graphics (POO)

我正在使用面向编程的对象和 classes 在 C++ 中开发一个游戏项目,但我想不出一种方法来为以下图形制作动画。

我需要的是当玩家按住左键或右键时,图形应该出现让角色喜欢移动,当他们停止按住键时它会变成空闲图形。

我无法在此处粘贴整个源代码,我有很多 classes 和函数。我需要的只是关于如何实现它的基本概念、示例或函数任何有用的东西.我不需要库,因为我只有两个要设置动画的精灵,所以没有必要。

例如 Sprites 创建对象的 class 和 Koala 移动并打印对象的 Koala在某个位置。

Sprites idleSprite, walkingSprite;
Koala koala;

这些声明只是为了避免其他解释。

非常感谢你的帮助。

PD:不用担心键盘按键或其他 class,我只需要如何为精灵设置动画。

Koala 应该有两种状态:

  • 方向状态:enum Direction {Left,Right}
  • 一种运动状态。 enum Movement { Idle, Walk };

由于您只有一张行走状态图片,以图形方式四处移动图片会给人一种漂浮的感觉。我建议你至少有两个行走姿势来表明脚在移动:

  • 一个移动计步器
  • 最大步数的常数。

然后应该根据键盘状态和经过的时间在游戏循环中更新状态。伪代码类似于:

if (!arrow_key_pressed()) {
    status_movement = Idle;
    lasttimer = gametimer();   // keep track of last event 
} 
else {
    status_movement = Walk; 
    if (left_arrow_pressed() ) 
        status_direction = Left; 
    else if (right_arrow_pressed() )
        status_direction = Right; 
    if (gametimer() - lasttimer > 2 ms ) {  // if enough time, 
       if (status_direction==Left) 
          position_x -= step_increment; 
       else if (status_direction==Right)
          position_x += step_increment; 
       movement_step = (movement_step+1) % maxi_steps;
       lasttimer = gametimer(); 
   }
}

接下来你要做的就是将图片的背景恢复到原来的位置,并在该位置绘制图片。为此,您可以调用一个带有参数 position_x、方向、移动状态和状态步长的函数,以 return/draw 精灵在正确的位置。