星のリスト
CoddyのPygameジャーニー「ゲームウィンドウで学ぶPython」セクションの一部。レッスン 24/32。
リストには、1つの変数に複数の値を順番に、角括弧で囲んで格納できます。
stars = [(100, 80), (220, 160), (360, 100)]ここでは、各項目が位置を表すタプルです。stars[0]は最初の項目である(100, 80)、stars[1]は2番目の項目です。rangeと同じように、数え始める値は0です。
forループを使って、リストの中身を順にたどることができます。ループ変数には、各項目が順番に入ります。
for star in stars:
pygame.draw.circle(screen, (255, 255, 255), star, 5)位置はタプルなので、starをそのまま中心の位置に指定できます。リストに位置を追加すれば、ループを変更しなくても星が1つ増えます。リストは画面上に何があるかをゲームが記憶しておくためのもので、ループはリストに入っているものを描画します。
チャレンジ
簡単リストから星を5つ描画しましょう:
starsの末尾に(360, 100)、(480, 200)、(580, 70)を追加します。stars[0]を描画する行をfor star in stars:に置き換え、それぞれを半径5の白い(255, 255, 255)の円として描画します。
自分で試してみよう
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# ゲームループの前に、ここで初期設定をします。
stars = [(100, 80), (220, 160)]
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), stars[0], 5)
pygame.display.flip()
clock.tick(60)
pygame.quit()
ゲームウィンドウで学ぶPythonのすべてのレッスン
自分で練習してみよう: Pygameプレイグラウンド