画面端で折り返す
CoddyのPygameジャーニー「ゲームウィンドウで学ぶPython」セクションの一部。レッスン 10/32。
ifは、条件が真の場合にのみ、その中の行を実行します。
if comet_x > 640:
comet_x = 0条件の末尾にはコロンを付けます。その下の行は4つのスペースでインデントします。これらの行はifに属します。Pythonは毎フレーム条件を判定します。彗星がウィンドウ内にある間、条件は偽なので何も起こりません。彗星が右端を越えると条件は真になり、彗星は左端に戻ります。
比較の結果はTrueまたはFalseです。>は「より大きい」、<は「より小さい」を意味し、==は2つの値が等しいかどうかを調べます。=1つは値を代入し、2つ並べると比較します。
> 640のような範囲を調べ、1つの正確な値だけを調べないようにしましょう。彗星は50から始まり、1フレームごとに3ピクセル移動します。つまり、635、638、641と進みます。640には決して到達しないため、comet_x == 640が真になることはありません。
チャレンジ
簡単彗星を移動させる行の後にifを追加します。comet_xが640より大きいとき、comet_xを0に設定します。すると、彗星は何度もウィンドウを横切って飛びます。
自分で試してみよう
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# ゲームループの前に、ここで初期設定をします。
moon_x = 160
moon_y = 120
comet_x = 50
comet_y = 200
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# ここで毎フレーム、値を変更します。
comet_x = comet_x + 3
screen.fill((20, 24, 48))
# 塗りつぶした後、ここで描画します。
pygame.draw.circle(screen, (240, 230, 160), (moon_x, moon_y), 50)
pygame.draw.circle(screen, (120, 200, 255), (comet_x, comet_y), 8)
pygame.display.flip()
clock.tick(60)
pygame.quit()
ゲームウィンドウで学ぶPythonのすべてのレッスン
自分で練習してみよう: Pygameプレイグラウンド