我必须编写一个程序,其中一只乌龟在屏幕周围旋转 90 度,随机选择左或右,直到它撞到墙壁,旋转 180 度并回到屏幕周围。当它撞墙 4 次时,循环终止。我遇到的问题是,当它从墙上反弹时,它会停止行走,并且循环显然已经终止,因为我可以通过单击它来关闭窗口(wn.exitonclick
)。这是完整的程序:
import turtle
import random
def isInScreen(w,t):
leftBound = w.window_width() / -2
rightBound = w.window_width() / 2
bottomBound = w.window_height() / -2
topBound = w.window_height() / 2
turtlex = t.xcor()
turtley = t.ycor()
stillIn = True
if turtlex < leftBound or turtlex > rightBound or turtley < bottomBound or turtley > topBound:
stillIn = False
return(stillIn)
def randomWalk(t,w):
counter = 0
while isInScreen(w,t) and counter < 4:
coin = random.randrange(0,2)
if coin == 0:
t.left(90)
else:
t.right(90)
t.forward(50)
t.left(180)
t.forward(50)
counter = counter+1
wn = turtle.Screen()
wn.bgcolor('lightcyan')
steklovata = turtle.Turtle()
steklovata.color('darkslategray')
steklovata.shape('turtle')
randomWalk(steklovata,wn)
wn.exitonclick()
我对它为什么停止感到困惑,考虑到一旦乌龟反弹回来,它的 x 和 y 坐标满足 isInScreen(w,t) 为真的要求,从而回到行走。有任何想法吗?
编辑:接受了 Sukrit 的回答,因为它最容易与我已经编程的内容联系起来,并给了我一些关于其他东西的指示,但布赖恩的回答也非常有用,如果可能的话,我会接受两者。非常感谢你们俩!