我正在用乌龟制作俄罗斯方块游戏。
当块关闭时,我使用time.sleep()使其等待几秒钟才会出现故障。但是,time.sleep()使整个代码停止,我只希望停止定义:
def moveDown():
time.sleep(2)
turtle(sety(100)
time.sleep(2)
turtle.sety(0)
time.sleep(2)
turtle.sety(-100)
time.sleep(2)
turtle.sety(-200)
setBlock()
我不希望ENTIRE代码停止,因为播放器需要使用左右键在屏幕上导航。那么,我将如何实现这一目标?对不起,如果这是非常粗糙和混乱。
答案 0 :(得分:1)
time.sleep()的作用是它被称为“阻塞调用”,这意味着当它被调用时,你的进程在完成之前不会继续进行。您需要让另一个线程/进程在后台运行才能使其移动。 像这样:
not (x and not y and z)
然后在你的代码的其他地方:
def moveDown():
turtle.sety(turtle.ycor())
if moveable:
screen.ontimer(moveDown, 2000) #ms
然后停止:
...
moveable=True
moveDown()
...
这是一个非常简单的例子(基于python.org示例)
答案 1 :(得分:0)
time.clock()可以报告自启动以来的秒数,因此您可以检查它是否允许用户在底部输入命令一段时间
import time
junk = time.clock()
pause_at_bottom = 0.5
## code till it hits the bottom
at_bottom = time.clock()
while time.clock() < (at_bottom + pause_at_bottom):
## code to run while at the bottom
## code to run once time has elapsed at bottom