for文で繰り返す
CoddyのPygameジャーニー「ゲームウィンドウで学ぶPython」セクションの一部。レッスン 15/32。
forループは、与えられた各値について1回ずつ、ループ内の行を繰り返し実行します。
for i in range(8):
pygame.draw.circle(screen, (255, 255, 255), (40 + i * 80, 80), 5)range(8)は、0から始まり8の手前で止まる、0、1、2、…、7の8個の数値を返します。ループは順番にそれぞれの値をiに格納し、インデントされた行を実行します。そのため、最初の星はx座標40に、次は120に、その次は200に描かれ、600まで続きます。
インデントされた行は、ifの場合と同じように、ループの本体です。本体の後にある、外側のインデントに戻った最初の行は、ループが終わると1回実行されます。
このループはゲームループの描画部分にあるため、8つの星は毎フレーム描画し直されます。短く、すぐに終わるので、フレームは予定どおりに終了します。
iはカウント用の変数によく使われる名前ですが、どんな名前でも使えます。for n in range(8):も同じように数を数えます。
チャレンジ
簡単1つの星を、range(8)を反復するforループに置き換え、(40 + i * 80, 80)の位置に半径5の白い星を8個描画します。
自分で試してみよう
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# ゲームループの前に、ここで準備をします。
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# フレームごとに、ここで内容を変更します。
screen.fill((20, 24, 48))
# 塗りつぶした後、ここで描画します。
pygame.draw.circle(screen, (255, 255, 255), (40, 80), 5)
pygame.display.flip()
clock.tick(60)
pygame.quit()
ゲームウィンドウで学ぶPythonのすべてのレッスン
自分で練習してみよう: Pygameプレイグラウンド