|
我编了一个很简陋的飞机躲子弹的程序,但是在运行的过程中发现了一个问题,就是游戏的帧数无法控制。在这个程序中,从画面的中央会随机地向各个方向发射子弹。画面的上方从左到右有4个数字,分别是帧数,开始时间(starttime=clock(),输出的就是starttime),结束时间(同开始时间),最后一个是前两者之间的差值。但是问题在于,当子弹数量增多时,飞机的移动速度会明显变慢,但此时帧数仍然是60+帧,还有个奇怪的现象,开始时间和结束时间之间的之间的差值始终为3个值——15,16,0。以前曾经在这里请教过类似的问题,当初得到的指点是在消息循环中增加如下语句
if (endtime-starttime>=特定值)
{
gamemain();
}
但是如此之后游戏速度虽然能够得以控制,但是如果飞机的移动速度较快的话看上去飞机似乎有比较明显的抖动迹象。不知道是不是我的眼睛有问题,请各位给在下指点:主要是如下两个问题。
1.为什么开始时间和结束时间之间的差值总是固定的3个值?为什么游戏速度变慢了帧数还是不变?
2.在对帧数进行了控制之后,飞机移动时是否有明显的抖动,这种情况是否正常,玩者是否察觉得到,如果这个现象很明显,该如何解决?
下面附上这个程序,第一个没有控制帧数,第二个控制了帧数,恳请给予指点 |
|