このコードは、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個のアイテムがあるため、これらのオブジェクトを選択して、名前(存在しない)または相対インデックスを明示的に呼び出さずに参照する方法です。このコードは、これらのループ内で実際に何をしているのか、最終的にこれらのループで何をしているのでしょうか?