Menu
CoddyTech

Зацикливание по экрану

Часть раздела Игровой цикл путешествия по Pygame на Coddy. Урок 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