Menu
CoddyTech

きらめき

CoddyのPygameジャーニー「ゲームウィンドウで学ぶPython」セクションの一部。レッスン 30/32。

実際の星はまたたきます。ここでは、それぞれの星が時折、偶然に1フレームだけ暗くなります。毎フレーム、各星は1から30までの数を1つ選び、1が出たときに暗く描画されます。

for star in stars:
    colour = (255, 255, 255)
    if random.randint(1, 30) == 1:
        colour = (110, 120, 170)
    pygame.draw.circle(screen, colour, star, 3)

各星について、colourは白で始まり、ifは1が出たときだけ色を変更します。30フレームに1回というのは、各星についておよそ1秒に2回です。また、各星がそれぞれ独自に数を選ぶため、異なるタイミングでまたたきます。このわずかで不規則な変化によって、空が生き生きと見えます。

プログラムの先頭にimport randomを追加します。ここでは、毎フレーム、各星について選択をやり直す必要があるため、描画ループの中で乱数を選びます。

challenge icon

チャレンジ

中級

星をきらめかせましょう:

  1. 先頭に import random を追加します。
  2. 星のループ内で、各星の colour を白の (255, 255, 255) に設定します。
  3. random.randint(1, 30) == 1 のとき、暗い色 (110, 120, 170) にします。
  4. colour を使って星を描画します。

自分で試してみよう

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()

# ゲームループの前に、ここで準備をします。
stars = []

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.MOUSEBUTTONDOWN:
            stars.append(event.pos)

    # 各フレームで、ここに変更する処理を書きます。

    screen.fill((20, 24, 48))
    # 塗りつぶしの後に、ここで描画します。
    pygame.draw.circle(screen, (240, 230, 160), (560, 80), 40)
    pygame.draw.rect(screen, (14, 16, 30), (0, 430, 640, 50))
    for star in stars:
        pygame.draw.circle(screen, (255, 255, 255), star, 3)

    pygame.display.flip()
    clock.tick(60)

pygame.quit()

ゲームウィンドウで学ぶPythonのすべてのレッスン

自分で練習してみよう: Pygameプレイグラウンド