Menu
CoddyTech

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です。

challenge icon

チャレンジ

中級

星を数え、10個で止めましょう:

  1. セットアップ部分で、font = pygame.font.Font(None, 36)とします。
  2. 描画部分で、f"Stars: {len(stars)}"を(230, 230, 240)の色で(20, 20)に表示します。
  3. 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プレイグラウンド