我在Tkinter编写了一个Pong游戏,但我遇到了fen.after函数的问题。
我的代码是:
if xballe2 >= largeur - epaisseur_barre and 0 <= yballe2 <= ypopo1:
xballe1, yballe1, xballe2, yballe2 = largeur/2 - rayon, hauteur/2 - rayon, largeur/2 + rayon, hauteur/2 + rayon #the ball goes in the middle of the canvas
fen.after(1000) #wait 1 sec before redefine its values
alpha = uniform(0, 2*pi)
Vx = V * cos(alpha)
Vy = V * sin(alpha)
toto += 1
score1.configure(text = toto)
我想在球重新开始前等待1秒。此时球已经在中间。但事实恰恰相反:python在重新定义中间球之前等待1秒。
为什么我的代码不起作用?
答案 0 :(得分:0)
*.after()
方法用于启动计时器,该计时器将在经过一定时间后运行代码。它会立即返回。如果你想在你的程序中引入一个延迟,这里有几种方法 - 因为我没有足够的代码来测试它们,这些是概念方法,你可能需要做更多工作才能使它们工作: / p>
概念方法#1
def cleanup_frame()
alpha = uniform(0, 2*pi)
Vx = V * cos(alpha)
Vy = V * sin(alpha)
toto += 1
score1.configure(text = toto)
if xballe2 >= largeur - epaisseur_barre and 0 <= yballe2 <= ypopo1:
xballe1, yballe1, xballe2, yballe2 = largeur/2 - rayon, hauteur/2 - rayon, largeur/2 + rayon, hauteur/2 + rayon #the ball goes in the middle of the canvas
fen.after(1000, cleanup_frame) # wait 1 sec before redefine its values
概念方法#2
import time
if xballe2 >= largeur - epaisseur_barre and 0 <= yballe2 <= ypopo1:
xballe1, yballe1, xballe2, yballe2 = largeur/2 - rayon, hauteur/2 - rayon, largeur/2 + rayon, hauteur/2 + rayon #the ball goes in the middle of the canvas
time.sleep(1) # wait 1 sec before redefine its values
alpha = uniform(0, 2*pi)
Vx = V * cos(alpha)
Vy = V * sin(alpha)
toto += 1
score1.configure(text = toto)