きらめき
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を追加します。ここでは、毎フレーム、各星について選択をやり直す必要があるため、描画ループの中で乱数を選びます。
チャレンジ
中級星をきらめかせましょう:
- 先頭に
import randomを追加します。 - 星のループ内で、各星の
colourを白の(255, 255, 255)に設定します。 random.randint(1, 30) == 1のとき、暗い色(110, 120, 170)にします。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プレイグラウンド