Menu
CoddyTech

何度も呼び出す

CoddyのPygameジャーニー「ゲームウィンドウで学ぶPython」セクションの一部。レッスン 23/32。

ループ内で関数を呼び出すと、パターンが描画されます。ループが引数を計算し、関数が描画を行います。

for i in range(8):
    draw_star(60 + i * 70, 60 + i * 45)

繰り返すたびに、前の星より右に70ピクセル、下に45ピクセル移動するため、星は (60, 60) から (550, 375) まで一直線に並びます。70 または 45 を変更すると、すべての星がその設定に従います。

これが、関数を書く価値がある理由です。星を描くコードは一度だけ書けば済みます。すべての星の見た目を変えるには、光線を長くしたり別の色にしたりするよう関数本体を変更すれば、呼び出すたびに新しい星が描画されます。

関数には、その働きを表す名前を付けましょう。多くの場合、動詞を使います。draw_star、move_comet、reset_game のようにします。そうすると、関数を呼び出す行が文のように読めます。

challenge icon

チャレンジ

簡単

星を一列に描きます。単一の呼び出しをfor i in range(8):に置き換え、draw_star(60 + i * 70, 60 + i * 45)を呼び出します。8個の星は(60, 60)から(550, 375)まで並びます。

自分で試してみよう

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()

# ゲームループの前に、ここで準備をします。
def draw_star(x, y):
    pygame.draw.line(screen, (255, 240, 200), (x - 10, y), (x + 10, y), 2)
    pygame.draw.line(screen, (255, 240, 200), (x, y - 10), (x, y + 10), 2)
    pygame.draw.circle(screen, (255, 240, 200), (x, y), 4)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # ここでフレームごとに変更します。

    screen.fill((20, 24, 48))
    # 塗りつぶした後、ここで描画します。
    draw_star(60, 60)

    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ゲームウィンドウで学ぶPythonのすべてのレッスン

自分で練習してみよう: Pygameプレイグラウンド