问题标签 [pygame-clock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
72968 浏览

python - pygame clock.tick() vs 游戏主循环中的帧率

每个 pygame 都有一个如下所示的游戏循环:

根据api get_ticks()

返回自调用 pygame.init() 以来的毫秒数。在初始化 pygame 之前,这将始终为 0。

但是clock.tick()

此方法应每帧调用一次。它将计算有多少 . 自上次调用以来已经过去了毫秒。

如果您传递可选的帧速率参数,该函数将延迟以使游戏运行速度低于给定的每秒滴答数。这可以用来帮助限制游戏的运行速度。通过每帧调用一次 Clock.tick(40),程序将永远不会以每秒超过 40 帧的速度运行。

我有点疑惑,是不是说clock.tick()直接影响到游戏开始后经过了多少毫秒?

那么clock.tick(40)意味着我每秒“发出” 40 帧,而 while 循环每秒运行 40 次?

我没有看到 fps 和滴答声之间的关系。

更新:我实际上只是对其进行了测试,并且get_ticks()无论您给tick() - 0.1or 30or的 fps 是多少,它仍然以 mls 为单位返回实时时间60

因此,它似乎clock.tick()只是设置了游戏应该运行多快或者while 循环应该多久更新一次,通过自身运行

但是我仍然有点困惑,欢迎其他答案。

0 投票
1 回答
543 浏览

python - Pygame - 仅运行一次 3 秒的事件

我对 PyGame 还很陌生,我正在创建一个太空射击游戏。这个游戏的一部分是通电,当玩家拾取特定的通电时,我希望玩家在 3 秒内不能射击。射击是通过鼠标点击完成的。

我可以捡起道具,我知道玩家上次捡到的道具是什么,但我正在为这个事件而苦苦挣扎。我正在考虑的实施方式是:

  1. Can't Shoot power up 被拾取 -> 完成了
  2. 阻止鼠标按钮
  3. 等待 3 秒,而游戏的其余部分仍在运行
  4. 取消阻止鼠标按钮。

我知道 Python 函数(例如 wait)无济于事。

有什么想法/建议吗?谢谢

0 投票
0 回答
205 浏览

python - Pygame中从键盘输入读取的延迟

我正在尝试测量屏幕上显示的某个事件与用户使用 pygame 中的输入键响应之间的时间。我希望使测量尽可能准确。

pygame 中的预期/最坏情况延迟是多少?而且,有什么替代方法可以更快地从键盘读取?

下面是我现在用来从键盘读取并测量时间的代码。

0 投票
2 回答
1321 浏览

python - 如何在pygame的状态栏中制作数字时钟(没有tkinter)?

目前我正在为学校做一个在 Pygame 中创建游戏的任务。我被困在创建时钟的过程中,它决定了;天、小时和分钟。

到目前为止,我已经创建了一些代码,但是当我运行它时,我的 Pygame 崩溃了。我知道这可能有点笨拙,但我真的很感激一些帮助。

这是我的代码:

0 投票
1 回答
218 浏览

python - 酸洗 pygame 时钟

我目前正在研究为我使用模块制作的小型 rpg 实现保存功能,该shelve模块使用pickle.

在发现我无法腌制 pygame 表面后,我遵循建议将字典键作为我的对象属性传递的建议。一旦我花了几个小时修复游戏,系统地检查所有表面并实际启动并运行开始菜单,我收到一条新消息错误,指出 pygame 时钟对象也无法序列化。令我沮丧的是,与表面不同,我无法预先创建我需要的所有时钟,因为我使用了很多特定于给定对象的时钟(攻击计时器、动画计时器、AI 计时器等)。也就是说,我没有为我的所有精灵设置一个攻击计时器,而是为每个精灵设置一个,这样我就有了更大的灵活性。此外,时钟的数量将取决于我创建的对象的数量,并且在某种程度上这个数字是随机的。我真的不能

因此,回顾一下我实际遇到的问题:

1)我怎样才能shelvepygame计时器?

2)如果不可能,您会推荐什么替代方案?

3) 在花更多时间实现这个保存功能之前,还有哪些其他 pygame 对象不可序列化,或者我在哪里可以找到这些信息?

我知道我问了很多,但我花了这么多时间对这些表面进行分类只是为了遇到与计时器相同的问题并想知道接下来会发生什么……尽管我想这都是学习的一部分;)

0 投票
1 回答
493 浏览

python - 如何在 pygame 窗口中设置点击时钟

我正在设计一个可以在屏幕上移动的时钟。但是我的代码现在可以做的是显示一个不变的时间。我想点击并计算时间。 我不变的时钟图片

我想让我的时钟更漂亮,但不知道怎么做。如果有人能提出任何建议,我将不胜感激。

0 投票
1 回答
3136 浏览

python - pygame:如何让我的游戏真正以 60fps 运行?

在我的主循环中,我有:

但是,读数显示游戏的读取速度为 62.5fps。然后我尝试输入clock.tick_busy_loop(57.5),这给了我 58.82...fps 的读数。当我设置时,clock.tick_busy_loop(59)我再次获得 62.5fps。看起来在 58.8fps 和 62.5fps 之间有一个我无法克服的阈值。如何让我的游戏真正以 60fps 运行?我主要是在寻找这种控制,因为我执行取决于音乐时间的事件。

0 投票
1 回答
377 浏览

python - Pygame 在使用 pygame.time.delay() 时有输入延迟

我的程序的目标是循环图像并将它们显示在屏幕上。当用户按下空格键时,它应该进入一个新屏幕。出于某种原因,从用户按下空格键到退出 game1 循环之间存在延迟。

我该如何解决?

0 投票
1 回答
474 浏览

python - 当我按下退出按钮时,我的 Python 程序崩溃了。否则它工作正常。我正在使用 Pygame 模块。代码附在下面

我正在从文件中读取数据。基本上,这些是我希望我的球在每次迭代后出现的坐标。代码工作正常,除了输出窗口“试用 1”在我按下退出按钮后立即崩溃。这个问题在我添加之前不存在for t in range (np.size(T)):;但是我要求这样做。请建议对代码进行一些可能的更改以解决问题。

0 投票
2 回答
44 浏览

python - 为什么我的角色在添加背景时会忽略时钟滴答?

当我没有背景时会发生这种情况: https ://www.youtube.com/watch?v=S-bv-j8le24

这是代码:

当我有背景时会发生这种情况: https ://www.youtube.com/watch?v=l89zZQ_8kzg

这是代码:

该代码与“gameWindow.blit(background, (0, 0))”在第一个注释中的事实完全相同。

我的问题是为什么当我添加背景时我的角色会变得这么慢?

同样在第二个中,他的移动速度不会改变,直到我将时钟降低到 30 及以下。