Menu
CoddyTech

Reaparecer al otro lado de la pantalla

Parte de la sección El bucle del juego del Journey de Pygame de Coddy. Lección 22 de 32.

En muchos juegos espaciales, una nave o una roca que sale por un lado de la pantalla reaparece por el otro. Esto es envolvimiento. La roca de aquí se desplaza hacia arriba y a la derecha, y después de unos segundos desaparece para siempre.

Comprueba cada borde después de moverla. El radio de la roca es 20, así que deja que salga completamente de la vista antes de que salte: al pasar de 480 + 20 por la derecha, reaparece en -20, fuera de la vista más allá del borde izquierdo, y entra deslizándose.

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

Lo mismo ocurre con y y la altura: al pasar de 380 por abajo, reaparece en -20; y al pasar de -20 por arriba, reaparece en 380.

Solo salta la posición. La velocidad se mantiene, así que la roca sigue desplazándose en la misma dirección después de envolverse.

challenge icon

Desafío

Fácil

Después de pos += vel * dt, haz que la roca reaparezca por el lado opuesto:

  1. Por encima de 500, pos.x pasa a ser -20; por debajo de -20, pasa a ser 500.
  2. Por encima de 380, pos.y pasa a ser -20; por debajo de -20, pasa a ser 380.

Pruébalo tú mismo

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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de El bucle del juego

Practica por tu cuenta: Playground de Pygame