何度も呼び出す
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 のようにします。そうすると、関数を呼び出す行が文のように読めます。
チャレンジ
簡単星を一列に描きます。単一の呼び出しを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()
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ゲームウィンドウで学ぶPythonのすべてのレッスン
自分で練習してみよう: Pygameプレイグラウンド