0

このコードは、Python と Pygame を使用して画面上を移動するボールをアニメーション化するプログラムからのものです。すべてのクラスと関数はデータ操作のみを扱います。ここでのメイン クラスはParticleです。実際の構築と関数呼び出しはすべて、次の数行で行われます。

number_of_particles = 10
my_particles = []
for n in range(number_of_particles):
    size = random.randint(20, 20)
    x = random.randint(size, width-size)
    y = random.randint(size, height-size)
    color = (100,0,100)
    particle = Particle(x, y, color, size)
    particle.speed = 1
    particle.angle = random.uniform(0, math.pi*2)
    my_particles.append(particle)

running = True
while running:
    screen.fill(background_color)
    for i, particle in enumerate(my_particles):
        particle.move()
        particle.getnumber()
        particle.bounce()
        for particle2 in my_particles[i+3:]:            
            collide(particle, particle2)
        particle.display()
pygame.display.flip()`

リストがメモリ内のオブジェクトの場所を保持していること、およびそれらを作成するために使用される for ループがオブジェクトに名前を付けず、個別のパラメーターを与えることを理解しています。作成ループの後の関数ループは、すべてのオブジェクトを反復し、それらの状態を更新します。衝突関数は、関数ループで反復されない他のすべてのパーティクルを循環するループ内で発生します。私が理解していないのは、10個のアイテムがあるため、これらのオブジェクトを選択して、名前(存在しない)または相対インデックスを明示的に呼び出さずに参照する方法です。このコードは、これらのループ内で実際に何をしているのか、最終的にこれらのループで何をしているのでしょうか?

4

3 に答える 3

0

Python では、名前は単なるオブジェクトのハンドルです。名前だけでなく、複数の方法で同じオブジェクトを参照できます。

于 2013-10-02T23:38:57.120 に答える
0

for ループは、リスト内の各項目を変数に割り当てていますparticle2

ここでの標準的な例では、各値を順番に変数に代入しますitem

items = ['a', 'b', 3]
for item in items:
    print item
于 2013-10-02T22:27:10.073 に答える
0

for ループ/ステートメント、各項目を (順番に) 取り出し、指定した変数名に割り当ててから、スイートを実行します。for ステートメントは反復可能なオブジェクトでのみ機能します。for ループ/ステートメントは、リストの内部に何があるかを認識せず、実際には気にしません。私はドキュメントを言い換えています。おそらくそれらを見ると役立つでしょう - for statement

于 2013-10-03T00:33:16.297 に答える