2016-09-20 2 views
0

私はPythonには新しく、現在はカメのグラフィックで荒い時間を過ごしています。これは私がTurtelliniオン飛行機(カメ)が時間の経過と共にどのように移動するかを示します。

交通システムは、巨大なパチンコでカメを推進(Pythonのカメが住んで惑星を)解決しようとしているものです。 A 特定のカメの元の位置(x0、y0)は(-180、-100)です。彼は であり、 秒あたり88単位、水平方向速度(vx)は毎秒20単位の初期垂直速度(vy)で上向きにショットして 右に撮影されます。彼は16秒間移動する。重力加速度(g) による加速度は、1秒あたり11単位です。第2(t)が与えられた にあるカメの位置は、x = x0 + vx * tおよびy = y0 + vy * t-g/2 * t2として計算されます。このプログラムは、この時期にカメがどのように移動するかを示すものです。

出力は次のようにする必要があります:ここで

Output Image

は、私が何をすべきかです。定数(垂直速度、横速度、 重力)と変数(x、y座標)を に彼を移動する、彼の尾を上に置く、彼に適切な形状を与える によってカメを設定する設定

  • 最初の位置は、テールダウンを入れて、 秒1から16を含むループを繰り返します。ループ表示の各反復で xとy変数(シェルウィンドウ内)の値は、 これらの座標にカメを移動、カメスタンプ彼の形を持って、 xとy変数の新しい値を計算する

    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() 
    

    I:ループ 終了した後、これまでに

私のコードをクリックして自分の色を変更し、彼の形状をスタンプし、マウスを待つ 、最後に計算された座標にカメを移動私が悪いことを知っている。誰も私がこの問題を解決するのを助けることができますか?

答えて

0

ほとんどの部品と部品があるようです。私が見ている最大の問題は、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() 

を、私は亀が弾丸のように、空気力学的だったと飛行を介して第1のヘッドを旅仮定しました。私にはわからない、とすぐに見つけることができませんでした、発射体の飛行角度のための式は、私は、既存の式から推測:

enter image description here

関連する問題