-1

これはstackoverflowに関する私の最初の投稿なので、完全に明確ではない場合は申し訳ありません。そのため、CompSciクラスのプログラムについてサポートが必要です。

手順は次のとおりです。

ウィンドウの中央で1000ポイントを初期化します。

  • 各タイムステップで1000回繰り返します...
    • 四面コインを裏返し、ポイントを上下または左右に動かします。-アイデアは、1000ポイントごとに独立してこれを行うことです。したがって、あるポイントの動きが他のポイントの動きに影響を与えることはありません。
    • 各ポイントの現在の位置に「ドット」または1x1の長方形を描画します。
    • 初期、中期、後期の分布を示す3つのスクリーンショットを添付してください。

私はこれまでに得たものの下に貼り付けました:

このコードの問題は次のとおりです。「移動中」のポイントが表示されません。私のインストラクターはそれをアニメーションのようにしたいと思っています。1000ポイントがあり、それらは1000回移動しているため、異なる「フレーム」間の遅延は非常に短くする必要があります。

誰かが私がこれをするのを手伝ってくれるなら、私はとても感謝しています。

from Tkinter import Tk, Canvas
from random import randint


d=0
t=0
v=1000

x = []
y = []
for i in range(1000):
    x.append(300)
    y.append(300)





root=Tk()
canvas=Canvas(root, width=600, height=600, bg="white")#creates the canvas

for l in range(v):
    for k in range(t):
        for i in range(len(x)):
            x[i] += randint(-2,2)
            y[i] += randint(-2,2)



    for i in range(1000):
        canvas.create_rectangle(x[i],y[i],x[i],y[i])
    if l < 999:
        for i in range(1000):
            canvas.create_rectangle(x[i],y[i],x[i],y[i], outline='white')

    t+=1
    l+=1

canvas.pack()
root.mainloop()
4

1 に答える 1

1

問題canvasは、アニメーションの各ステップで何をすべきかわからないことのようです。キャンバスを更新するために使用するコードを関数(おそらくと呼ばれるredraw())に配置する場合は、プログラムのメインコースでその関数を呼び出して最初の画像を描画し、関数canvas.after(tim,redraw)の最後の行のように呼び出しを含めます。これにより、キャンバスがミリ秒redraw()ごとに更新されます。tim

(編集)

また、リストからではなくrandint(-2,2)、リストからランダムな選択が生成されることにも注意してください。これは、あなたが望んでいるように見えるものです。また、4つの面が+ 2x、-2x、+ 2y、-2yである4面のサイコロをシミュレートしようとしている場合。次に、x方向とy方向のランダムな動きを別々に計算しても、これは行われません。これは、すべてのタイムステップですべてのポイントのx方向とy方向の両方の動きが生成されるためです。[-2,-1,0,1,2][-2,2]

于 2013-02-03T02:53:10.123 に答える