lenで数える
CoddyのPygameジャーニー「ゲームウィンドウで学ぶPython」セクションの一部。レッスン 26/32。
len(stars)は、リストに含まれる項目の数です。空のリストの長さは0です。これを使って件数を表示します。
text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))f文字列の波括弧には、関数呼び出しを含め、任意の式を入れられます。
lenは上限を設定するのにも使えます。空きがある間だけ星を追加します。
if event.type == pygame.MOUSEBUTTONDOWN and len(stars) < 10:
stars.append(event.pos)リストに星が10個入ると条件が偽になるため、クリックしても何も起こりません。画面上の件数と上限は同じリストを参照するので、常に一致します。
上限の判定はイベントループ内で、クリックの判定とandで結び付けられています。追加処理が実行されるのは、イベントがクリックで、かつ空きがある場合だけです。lenは文字列にも使えます。len("Night")は5です。
チャレンジ
中級星を数え、10個で止めましょう:
- セットアップ部分で、
font = pygame.font.Font(None, 36)とします。 - 描画部分で、
f"Stars: {len(stars)}"を(230, 230, 240)の色で(20, 20)に表示します。 len(stars) < 10の間だけ、クリック時に星を追加します。
自分で試してみよう
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))
# 画面を塗りつぶした後、ここに描画します。
for star in stars:
pygame.draw.circle(screen, (255, 255, 255), star, 5)
pygame.display.flip()
clock.tick(60)
pygame.quit()
ゲームウィンドウで学ぶPythonのすべてのレッスン
自分で練習してみよう: Pygameプレイグラウンド