1

このコードがどのように機能するかを理解しようとしているのですが、誰か説明してください。

def draw_star(star): # drawing a star
    # you only need to change a pixel, so use set_at, not draw.line
    screen.set_at((star[0], star[1]), (255, 255, 255))
    star[0] -= 1
    if star[0] < 0:
        star[0] = screen.get_width()
        star[1] = random.randint(0, screen.get_height())

stars = []
for i in range(1200):
    x = random.randint(0, screen.get_width())
    y = random.randint(0, screen.get_height())
    stars.append([x,y])

for star in stars:
    draw_star(star)
4

1 に答える 1

5

まず、コードは 1200 個の[x, y]座標を生成するため、それぞれが Python になりlistます。

stars = []
for i in range(1200):
    x = random.randint(0, screen.get_width())
    y = random.randint(0, screen.get_height())
    stars.append([x,y])

それぞれのxy座標は、画面の制約内でランダムな値で構成されます。

次に、これらの各座標が描画されます。

for star in stars:
    draw_star(star)

これにより、[x, y]座標リストが関数に渡されますdraw_star

def draw_star(star): # drawing a star

star[0]これは、指定された座標 ( is xstar[1]y座標)に白いピクセルを設定します。

    # you only need to change a pixel, so use set_at, not draw.line
    screen.set_at((star[0], star[1]), (255, 255, 255))

次に、コードは x 座標から 1 を減算します (1 ステップ左)。変更可能なリストが使用されているため、これは元のリストを変更します。

    star[0] -= 1

これにより画面の端を超えて座標が変更された場合、星の座標は、画面の右側のランダムな高さで新しい座標に置き換えられます。

    if star[0] < 0:
        star[0] = screen.get_width()
        star[1] = random.randint(0, screen.get_height())

途中で画面を空白にしてループを繰り返すと、星が右から左に移動するようにアニメートされ、新しい星がランダムな高さで右側に表示され、星が星の左側から落ちます。画面。for star in stars: draw_star(star)

ここでの核となる考え方は、draw_star()関数が変更可能なリストを処理し、それらに含まれる値を変更してstars、アニメーションの次のループのためにグローバル リストの内容を効果的に変更することです。

于 2013-04-05T11:12:33.660 に答える