PacMan运动并不顺利

时间:2010-12-27 12:05:14

标签: c++ oop pacman

我正在使用简单的for循环移动pacman但是pacman闪烁或者可能是整个屏幕更新和闪烁。我怎样才能让它更顺畅?

修改:

我目前正在使用C ++ Turbo及其内置图形库。我稍后会倾向于使用SDL(在2D数组(网格)上使用图像切片)。

1 个答案:

答案 0 :(得分:4)

您可以使用许多技术在帧之间平滑过渡。可能最简单的是双缓冲,其中帧的构造在可视视频存储器之外完成,然后整个存储器块切换到新的帧位置(通常具有页面翻转,快速硬件开关,但甚至创建帧在非视频内存和“blitting”它在一个快速操作中的视频内存可能是有利的。)

通过使用此方法,转换可以看起来更平滑,因为您从未在任何位置显示半构建的帧。如果在硬件帧之间进行切换(至少在较旧的CRT显示器上 - 我实际上不知道新的监视器是否具有垂直和水平回扫的概念),尤其如此。

另一种方法是确保每帧的计算成本低。一个例子是在非视频内存中只绘制PacMan 中的隧道线,这样你就可以相对快速地“blit”它(因为它们永远不会改变)。换句话说,构建框架将包括:

  • 复制隧道墙,永不改变。
  • 复制点,这些点很少变化。
  • 绘制经常变化的字符。

这加快了这个过程,我已经在俯视太空射击游戏中使用了这个技巧,这样更深的帧也可以移动得更慢,从而产生视差效果。