パラメーター
CoddyのPygameジャーニー「ゲームウィンドウで学ぶPython」セクションの一部。レッスン 21/32。
(320, 240) に常に描画する関数は、あまり役に立ちません。パラメーターを使えば、呼び出し元が位置を選べます。defの括弧内にパラメーター名を指定し、本文では変数のように使います。
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)呼び出すたびに、値である引数を同じ順序で渡します。draw_star(120, 100)は、xが120、yが100として本文を実行します。draw_star(520, 90)は、別の値でもう一度実行します。定義は1つで、呼び出した回数だけ星を描けます。
パラメーターが存在するのは、関数の実行中、その関数の内部だけです。関数の外では、xとyは何も意味しないか、その場所でそれらの名前に保存した値を意味します。
チャレンジ
中級呼び出し元が星を配置できるようにします:
- 定義を
def draw_star(x, y):に変更し、(x, y)を中心に描画します。線はx - 10からx + 10までと、y - 10からy + 10まで引き、点は(x, y)に描きます。 - 3回呼び出します:(120, 100)、(320, 180)、(520, 90)に配置します。
自分で試してみよう
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# ゲームループの前に、ここで準備をします。
def draw_star():
pygame.draw.line(screen, (255, 240, 200), (310, 240), (330, 240), 2)
pygame.draw.line(screen, (255, 240, 200), (320, 230), (320, 250), 2)
pygame.draw.circle(screen, (255, 240, 200), (320, 240), 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()
pygame.display.flip()
clock.tick(60)
pygame.quit()
ゲームウィンドウで学ぶPythonのすべてのレッスン
自分で練習してみよう: Pygameプレイグラウンド