while文で数える
CoddyのPygameジャーニー「ゲームウィンドウで学ぶPython」セクションの一部。レッスン 19/32。
whileループは、条件が真である間、繰り返し実行されます。何回繰り返すかを事前に把握できない場合に使いましょう。
radius = 200
rings = 0
while radius > 10:
pygame.draw.circle(screen, (150, 190, 255), (320, 240), radius, 2)
radius = radius // 2
rings = rings + 1半径は毎回半分になります。200、100、50、25、12。//は割り算をして、小数点以下を切り捨てます。そのため、25 // 2 は 12 です。次は 6 になり、条件が偽になるので、5個の円を描いたところでループが終了します。ringsは円の数を数えます。円を描画する呼び出しの5番目の数値である2は、塗りつぶした円ではなく、幅2ピクセルの輪郭を描きます。
ゲームループもwhileループで、ウィンドウを閉じるまで実行されます。フレーム内のwhileループはすぐに終了しなければ、フレームが終わらなくなります。半径を半分にする行を省くと、条件が永遠に真のままになります。ゲームがフリーズし、Checkはゲームが最初のフレームに到達しなかったと判定します。
チャレンジ
中級描画部分で、1つのリングをwhileループに置き換えます。
radius = 200、rings = 0から始めます。radius > 10の間、色(150, 190, 255)、幅2の輪郭リングを(320, 240)を中心に描画します。//で半径を半分にし、ringsに1を加えます。- ループの後、
f"Rings: {rings}"を(20, 20)に表示します。表示はRings: 5となります。
自分で試してみよう
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# ゲームループの前に、ここで初期設定をします。
font = pygame.font.Font(None, 36)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 各フレームで、ここで内容を更新します。
screen.fill((20, 24, 48))
# 画面を塗りつぶした後、ここに描画します。
pygame.draw.circle(screen, (150, 190, 255), (320, 240), 200, 2)
text = font.render("Rings: 1", True, (230, 230, 240))
screen.blit(text, (20, 20))
pygame.display.flip()
clock.tick(60)
pygame.quit()
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ゲームウィンドウで学ぶPythonのすべてのレッスン
自分で練習してみよう: Pygameプレイグラウンド