如何让Python函数在游戏的其余部分继续时休眠一段时间?

2024-06-01 20:32:33 发布

您现在位置:Python中文网/ 问答频道 /正文

这就是我所尝试的:

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

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

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


Tags: 代码苹果comhttp游戏leniftime
3条回答

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

如果您不希望应用程序的其余部分在调用“sleep”时暂停,则需要使用线程(请参见http://docs.python.org/library/threading.html)。因为“wormCoords”变量需要在线程之间共享,所以在更新它时需要小心,以避免出现争用情况。在

这里要做的正确的事情是在设置代码中设置一个计时器事件(在HEAD = 0行之后)

SHRINKSNAKE = pygame.USEREVENT+0

这将进入runGame函数中direction = RIGHT之后

^{pr2}$

runGame中的事件处理循环中,elif event.type == KEYDOWN:之前,elif应该排成一行

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

有关详细信息,请查看^{}上的文档

相关问题 更多 >