我需要让乌龟永远地反弹窗户的边缘,我唯一遇到的问题是每次撞到墙壁时将乌龟向前设置。通过将任何设定的数字放入前进,它会在几个循环中离开屏幕。我需要在前进功能中做些什么,以确保它只能到墙壁并“反弹”?
import turtle
window = turtle.Screen()
# Create a turtle and name it bob.
bob = turtle.Turtle()
window.reset()
window.setworldcoordinates(-50,-50,50,50)
bob.left(1)
bob.fd(51)
bob.speed(10)
while True:
xBob = bob.xcor()
yBob = bob.ycor()
print(xBob,yBob)
if xBob <= -50:
heading = bob.heading()
bob.setheading(180 - heading)
bob.fd()
elif xBob >= 50:
heading = bob.heading()
bob.setheading(180 - heading)
bob.fd()
elif yBob <= -50:
heading = bob.heading()
bob.setheading(180 - heading)
bob.fd()
elif yBob >= 50:
heading = bob.heading()
bob.setheading(180 - heading)
bob.fd()
window.exitonclick()
答案 0 :(得分:0)
听起来你想要i
以合理的角度来回反弹。您的帖子中隐藏着一些问题。首先,不要计算距离墙壁的距离,而是可以继续向前移动1直到你撞到墙壁。这将是近似的;如果你需要它完全,那么你需要使用距离公式。此外,当你敲击顶部和底部墙壁时,你改变方向的逻辑是关闭的。我还做了一些其他的更改,比如制作x和y尺寸变量。
turtle