我怎么能创建和显示一个计时器在帕斯卡没有一个形式?



我目前正在制作一款用Pascal制作的俄罗斯方块游戏,作为一个独立项目,使用"图形"单元来制作游戏的图形部分。作业的一部分包括限时模式,你要在时间用完之前拿到最多的分数。

现在,这意味着要创建一个每秒更新一次的计时器,不仅如此,还要在屏幕上显示,所有这些比赛照常进行。这部分真的让我很困惑,以我现有的知识,我想不出一个可能的解决方案。

首先,如果你正在制作一款游戏,不要使用LCL和组件去创造它,因为它们并不适合于此。其次,如果你想制作任何有意义的游戏,请使用专用库,如SDL2, Allegro或raylib -你将能够访问所有有用的功能(关于视频,音频,游戏手柄等),而不仅仅是图形渲染。

如果你的游戏要以恒定的帧率运行,解决方案很简单——计算帧数,因为你知道每秒要处理多少帧。您需要一个帧计数器,这样您就可以将给定的时间(转换为秒数)乘以目标帧率。然后,在每个游戏帧中,递减这个计数器-当它达到0的值时,游戏结束。

不能用几句话来描述,因为这个话题很广泛,有很多方法可以解决这个问题。


如果你需要一些灵感,几个月前我完成了我自己的俄罗斯方块版本(Windows版NES俄罗斯方块的克隆),名为Fairtris -一个用Free Pascal和SDL2编写的开源项目(使用Lazarus)。有一个快速运行模式,你必须达到19级别从0开始。如果10分钟过去了,游戏就结束了,这个机制就像上面描述的那样。

在Fairtris中还有另一个计时器,这次是一个全局计时器-如果玩家已经开始排位赛,它用于倒计时排位赛时间。它也计算帧数,但它一直工作-即使玩家停止播放并退出主菜单。

最新更新