Menu
CoddyTech

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はゲームが最初のフレームに到達しなかったと判定します。

challenge icon

チャレンジ

中級

描画部分で、1つのリングをwhileループに置き換えます。

  1. radius = 200、rings = 0から始めます。
  2. radius > 10の間、色(150, 190, 255)、幅2の輪郭リングを(320, 240)を中心に描画します。//で半径を半分にし、ringsに1を加えます。
  3. ループの後、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()
quiz icon腕試し

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

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

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