2

这是我尝试过的:

if len(wormCoords) > 2:
    time.sleep(4)
    del wormCoords[-1]

但随后整个游戏(我正在做一个简单的“蛇”游戏)在移除蛇的最后一部分之前休眠 4 秒。计划是每 4 秒移除蛇的最后一部分,这样你就必须不断地吃苹果(当你这样做时,蛇会长一个),否则你会死(蛇会饿死)。

完整的代码可以在这里找到:http: //inventwithpython.com/pygame/chapter6.html 但我正在对其进行一些更改。

4

3 回答 3

4

正确的做法是在设置代码中使用它设置一个计时器事件(在行之后HEAD = 0

SHRINKSNAKE = pygame.USEREVENT+0

这在之后的runGame函数中direction = RIGHT

pygame.time.set_timer(SHRINKSNAKE, 4*1000)

这在事件处理循环中runGame,在s 应该对齐的行elif event.type == KEYDOWN:之前elif

elif event.type == SHRINKSNAKE:
  if len(wormCoords) > 2:
    del wormCoords[-1]

有关更多详细信息,请查看文档pygame.time.set_timer

于 2012-05-29T20:22:32.133 回答
2

查看pygame.time.set_timer函数。这允许您每隔几毫秒触发一个事件,您可以使用典型的事件处理机制来处理(就像您处理鼠标移动、键盘、绘图等一样)。阅读pygame.event文档以获取有关处理事件的更多信息。

于 2012-05-29T20:18:10.970 回答
-1

如果您不希望应用程序的其余部分在调用“睡眠”时暂停,则需要使用线程(请参阅http://docs.python.org/library/threading.html)。由于“wormCoords”变量需要在线程之间共享,因此在更新它时需要格外小心以避免出现竞争条件。

于 2012-05-29T20:13:49.383 回答