Menu
CoddyTech

画面端で反対側に回り込む

CoddyのPygameジャーニー「ゲームループ」セクションの一部。レッスン 22/32。

多くの宇宙ゲームでは、画面の片側から出ていった宇宙船や岩が、反対側から戻ってきます。これを画面端の折り返しといいます。ここにある岩は右上に漂っていき、数秒後には完全に見えなくなります。

移動した後、それぞれの端を確認します。岩の半径は20なので、画面から完全に見えなくなってから反対側に現れるようにします。右端では480 + 20を越えると、-20の位置に戻り、左端の外から滑り込んできます。

if pos.x > 500:
    pos.x = -20
if pos.x < -20:
    pos.x = 500

高さに対するyも同じです。下端で380を越えると-20の位置に戻り、-20より上に行くと380の位置に戻ります。

ジャンプするのは位置だけです。速度はそのままなので、岩は折り返した後も同じ方向に漂い続けます。

challenge icon

チャレンジ

簡単

pos += vel * dtの後で、岩を画面の反対側に回り込ませます。

  1. 500を超えたら、pos.xは-20になり、-20未満になったら500になります。
  2. 380を超えたら、pos.yは-20になり、-20未満になったら380になります。

自分で試してみよう

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Drifting Rock")
clock = pygame.time.Clock()

pos = pygame.Vector2(240, 180)
vel = pygame.Vector2(120, -70)
dt = 0

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    pos += vel * dt

    screen.fill((20, 20, 34))
    pygame.draw.circle(screen, (150, 150, 160), pos, 20)
    pygame.display.flip()
    dt = clock.tick(60) / 1000

pygame.quit()
quiz icon腕試し

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

ゲームループのすべてのレッスン

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