我是Python的新手,目前在使用乌龟图片时遇到了困难。这就是我想要解决的问题
在Turtellini(Python龟居住的星球)上 运输系统用巨大的弹弓推动海龟。一个 特定乌龟的原始位置(x0,y0)是(-180,-100)。他是 然后以每单位88个单位的初始垂直速度(vy)向上射击 第二个和水平速度(vx)为每秒20个单位 对。他旅行了16秒。重力加速度(g) 是每秒11个单位的平方。龟的位置在 给定的第二(t)计算如下:x = x0 + vx * t和y = y0 + vy * t - g / 2 * t2。这个节目是为了展示乌龟在这段时间里的旅行方式。
输出应该是这样的:
这是我应该做的;
到目前为止我的代码:
import turtle
def main():
wn = turtle.Screen()
turtellini = turtle.Turtle()
t = int(input("Blab blab blab: "))
x0 = -180
y0 = -100
vx = 20
vy = 88
g = 11
x = (float(x0 + vx * t))
y = (float(y0 + vy * t - g / 2 * t**2))
turtellini.color("black")
turtellini.shape("turtle")
turtellini.up()
turtellini.goto(-180,-100)
turtellini.down()
for i in range(1,16,1):
turtellini.stamp()
turtellini.forward(i)
turtellini.right(i)
print(x)
print(y)
if __name__ == "__main__":
main()
我知道我做得不好;但有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
你似乎拥有大部分零件。我看到的最大问题是你没有把你的x,y计算放在循环中。循环迭代变量i
在运动方程中确实是t
。每次计算新的x,y时,只需将乌龟移动到该位置:
import turtle
from math import pi, atan
x0, y0 = -180, -100 # initial location
vx, vy = 20.0, 88.0 # initial velocity in units per second
travel_time = 16 # seconds
g = 11.0 # acceleration due to gravity in units per second squared
turtellini = turtle.Turtle(shape='turtle', visible=False)
turtellini.penup()
turtellini.radians() # to make turtle compatible with math.atan()
turtellini.setheading(pi / 2) # straight up
turtellini.goto(x0, y0)
turtellini.pendown()
turtellini.showturtle()
turtellini.stamp()
for t in range(1, travel_time + 1):
x = x0 + vx * t
y = y0 + vy * t - g / 2 * t**2
turtellini.goto(x, y)
print(x, y)
angle = atan((vy * t - g * t**2) / (vx * t)) # a guess!
turtellini.setheading(angle)
turtellini.stamp()
turtle.exitonclick()
与黄金标准图像不同,我认为乌龟像子弹一样是空气动力学的,并且首先穿过飞行头。我不知道,也无法快速找到射弹飞行角度的公式,所以我从现有的公式中猜到了: