【问题标题】:Randomly blitting in PygamePygame中的随机blitting
【发布时间】:2013-06-21 05:05:35
【问题描述】:

我正在制作一个基本的 pygame,我想知道是否有人可以帮助我

所以在一段时间后,电源会向下滚动屏幕,但我无法让它工作

这是我使用的方法:

def random_event(self):
    self.force_img_r = self.force_img.get_bounding_rect()
    self.rnd_x = random.randint(5,315)
    self.force_img_r.x = self.rnd_x
    self.force_img_r.y += 3
    screen.blit(self.force_img,(self.rnd_x, self.force_img_r.y))

它所做的只是图像在瞬间闪烁然后什么都没有

谁能告诉我为什么它不起作用!?

【问题讨论】:

  • 每次更新时是否强制添加到位置的速度?
  • 没有力场是什么我 blitting 所以我称之为强制它应该每次更新移动 3 个像素

标签: python python-2.7 random pygame


【解决方案1】:

在 pygame 中,您通常有一个主循环,在每次迭代时都会清理屏幕,这可能就是为什么您只会看到闪烁,然后绘制并在下一个循环中再次清理的原因。

为了解决这个问题,在 pygame 事件中应该只更新游戏状态,并根据当前状态在每个循环上绘制屏幕。

一些伪代码:

# Main Loop
while True:

    # Process events
    #   -> Update game state

    # Clean screen
    # Draw current state to the screen

    # Update or flip display

    # Keep framerate (clock.Tick())

您可以调用外部类/方法/函数,但您应该始终将此结构保留在主循环中。

【讨论】:

  • 我知道如何制作一个 pygame 游戏基本完成了我发布的代码是游戏类中的一个方法,它每 20 秒被放入循环中
  • 您发布的函数名为random_event,您正在其中进行绘图,因此您似乎没有将事件处理与绘图分开。也许您应该发布更多代码以获得更好的答案。
猜你喜欢
  • 2018-07-14
  • 1970-01-01
  • 2011-12-31
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多