每个pyplay都有一个游戏循环,看起来像这样:
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
print("tick " + str(pygame.time.get_ticks()))
clock.tick(1)
根据get_ticks()
的api:
返回自调用pygame.init()以来的毫秒数。在pyplay被初始化之前,这将永远是0。
但是时钟。勾选()
:
此方法应每帧调用一次。它会计算出有多少。自上次调用以来已过毫秒。
如果您传递可选的framerate参数,函数将延迟以使游戏运行速度低于给定的每秒滴答数。这可以用来帮助限制游戏的运行速度。通过呼叫时钟。每帧勾选(40)一次,程序的运行速度不会超过每秒40帧。
我有点摸不着头脑,是不是说clock.tick()
直接影响游戏开始到现在已经过了多少毫秒?
所以clock.tick(40)
意味着我每秒“发出”40帧,同时循环每秒运行40次?
我看不出fps和滴答声之间的关系。
更新:我实际上刚刚测试过它,不管你给tick()-0.1
或30
或60
什么样的fps,它仍然会在mls中实时返回。
所以它似乎是时钟。tick()
只需设置游戏的运行速度,或者循环应该自我更新、自我运行的频率。
不过我还是有点困惑,欢迎其他答案。
我知道已经回答了,但我想解释一些我累了
import pygame
pygame.init()
gameDisplay = pygame.display.set_mode((800,600))
clock = pygame.time.Clock()
crashed = False
counter = 1
while not crashed:
for event in pygame.event.get():
if event.type == pygame.QUIT:
crashed = True
pygame.display.update()
print(counter)
counter += 1
clock.tick(1) # will be 10 in the next run
所以我们要做的是,我们将进行两次运行,一次每秒帧数等于1,另一次每秒帧数为10,我们将运行代码10秒“我用我的手机秒表来做这个”。
所以从数学上讲,10秒的1 fps是10对,10秒的10 fps是100“duuh”,所以你应该在第一次运行“1 fps”时得到的是反变量应该在10左右,“取决于你的时机”,第二次运行结束时在你的控制台中10秒的计数器变量应该在100左右
简而言之,我们可以说循环控制着游戏的显示和时钟。tick()指定要更改游戏显示的速度,即循环运行的速度
我设置了高fps-clock.tick(30)或60,游戏运行速度很快,get_ticks()打印出经过的时间非常快,但是pygame.init()的实际运行时间没有改变!
我以为时间跑得更快是因为高FPS!没有,我试过了。勾号(0.1)-也称为每10秒1帧,并且每10秒仅打印一次所用时间!因为while循环是以fps=0.1的速度运行的。
但是如果fps更高,更新率会更高,而不是总的运行时间
现在我明白了。
FPS,Frames Per Second是每单位时间显示的帧数
1/FPS是每帧之间应经过的时间量<在PyGame中,滴答声只是时间的一种度量。
时钟。勾选(40)
表示每秒最多应通过40帧。
问题内容: 我写一个游戏循环,我发现在例如下面的代码在这里。我还研究了进行游戏循环的其他方法,例如本文。但是我无法让这些工作。因此,我保留了第一个链接中的那个。 我想知道的是: 我编写游戏循环的方式是否是实现此目标的好方法? 有什么建议? 我应该在游戏循环中使用吗? 这是我当前的代码: 问题答案: 最终,您将想要移至LWJGL之类的地方,但让我强调一下,请继续做您现在在这里所做的事情。它将教您基本
本食谱演示了使用组合流来创建游戏循环的一种方式。本食谱旨在突出如何用响应式的方式来重新思考现有问题。在这个示例中,我们将提供整体循环以及自上帧以来的增量时间。与此相结合的是用户输入流,以及当前的游戏状态,我们可以用它来更新我们的对象,并根据每帧的发出来将其渲染到屏幕上。 示例代码 ( StackBlitz ) import { BehaviorSubject, Observable, of, fr
包含在程序启动时启动的线程。这个线程包含一个循环,每40毫秒更新一次游戏并重新绘制()board。 备选办法B: 板创建一个摆动计时器。这个计时器的动作监听器是板本身。actionPerformed()方法每40毫秒运行一次,并更新game+repaints Board()。 谢谢
游玩UMD™游戏 开始游玩游戏 1. 插入UMD™。 2. 选择 (游戏) > (UMD™)。 离开游戏 于游玩时按下PS按钮(HOME(归返)按钮)。请遵循画面指示,正确操作。 关于保存数据 保存数据会保存至Memory Stick™,并于(管理保存数据)显示。
问题内容: 我正在用Java创建我的第一个游戏。游戏是大富翁。我在如何设计游戏以模拟其基于回合的结构(管理玩家回合)方面感到困惑。我想允许一个人控制和一个或多个AI控制的玩家玩游戏。 我的具体问题是,我不知道是否实施游戏循环,即可以管理玩家和与大富翁游戏直接相关的变量的循环(例如,提示每个玩家轮到他们,增加回合到下一个玩家的回合,或依次让每个玩家掷骰子)。我指的不是“游戏循环”这个词的更底层含义,
我对我正在写的一个介于两者之间的骰子游戏有一个问题。我之前有另一个问题被回答了,但我仍然有一个问题。(请记住,我对一般编程非常陌生) 甚至-史蒂文!高还是低[hl]?h 模具3:9 *你赢了!* 任何关于我需要改变什么/改变它的任何帮助都将非常感谢!提前谢了。