Colisión entre una bola y dos paletas con Pygame

| Última modificación: 13 de mayo de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Has realizado un script para una colisión entre una bola y dos paletas con Pygame? Para aprender a programar con Python y, además, desarrollar videojuegos, debes seguir interactuando con otros programas de código y construyendo videojuegos de diferente índole, tales como un juego de Pong. Por eso, para trabajar tus habilidades en relación al código y en la creación de tus videojuegos, te contamos un ejemplo sobre la colisión entre una bola y dos paletas con Pygame.

¿Cómo manejar la colisión entre una bola y dos paletas con Pygame?

Representación de la colisión entre una bola y dos paletas con Pygame

Para que la imagen de la colisión entre una bola y dos paletas con Pygame quede más clara y su representación en forma de código sea más práctica, a continuación te presentamos una figura que ilustra el movimiento para la colisión entre una bola y dos paletas con Pygame.

Representación de la colisión con la paleta derecha

Como puedes ver en la imagen, el punto de la bola self.x == ANCHO – self.w, self.y, que usualmente está en movimiento, se encuentra con alguno de los puntos de la paleta (en naranja) y colisiona. De ambos objetos, bola y paleta, conocemos datos como alto, ancho y coordenadas. De esta manera, estos datos se calcularán para representar la operación de la colisión entre los dos objetos. Esta operación es Bola.x – Bola.w >= Paleta.x cuando la bola se dirige al lado derecho. Aun así, hay una función de la librería de Pygame, del módulo collide, que nos facilita comprobar esta colisión.

Ahora, antes de adentrarnos en el proceso para manejar al colisión en una bola y dos paletas con Pygame para el desarrollo de un videojuego como Pong, te recomendamos leer otros artículos, tales como manejar colisiones de Pong en Python y el glosario de métodos de funciones de collide en Pygame.

Colisión entre una bola y dos paletas con Pygame

La colisión entre una bola y dos paletas es una de las tres tareas que tenemos que realizar para que una pelota de Pong se mueva en términos de las condiciones del mismo juego. Por ejemplo, en un post anterior se habló de cómo controlar la colisión de la bola con los bordes inferior y superior de la pantalla del juego. Ahora es la oportunidad de comentar la colisión entre la bola y las dos paletas de cada jugador. Para representar esta colisión, usaremos el método colliderect, que comprueba si dos rectángulos se superponen, es decir, comprueba si han colisionado.

Entonces, en primer lugar, deberás tener establecido la clase del juego Pong, la clase de la bola y la clase de pelotas. Después de haberle atribuido las características necesarias para su funcionamiento, deberás seguir definiendo el movimiento de la bola. Por eso, propondremos una método para la definición de la colisión. Allí estableceremos una condición para cambiar la dirección de bola cuando rebote contra la paleta del jugador 1, del lado derecho, y después le agregamos la misma condición para la paleta del jugador 2 del lado izquierdo.

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

En este momento, ya podremos pensar en la aleatoriedad de ángulos de movimiento para que nunca sea fijo. Para ello, deberemos importar la librería random de Python:

#importar librerías

import Pygame

import random

#definición del movimiento

def colision_paletas (self)

if.selfjugador1.colliderect (self.bola) or if.selfjugador2.colliderect (self.bola)

self.bola.vel_h = -self.bola.vel_h

self.bola.vel_v = random.randint (-10, 10) #para que el ángulo sea aleatorio

Ahora ya sabes cómo manejar la colisión entre las dos paletas de cada jugador de Pong y la bola, por tanto, cada vez estás más cerca de terminar este ejemplo práctico y seguir desarrollando videojuegos con Pygame.

Si quieres conocer más acerca de los ángulos y de la aleatoriedad de movimiento sobre las trayectorias que realizan, puedes leer acerca de la aleatoriedad de ángulos.

En resumen, la colisión entre una bola y dos paletas con Pygame se realiza incluyendo módulos de la librería, como el método de colisiones y otros como el random.init para trabajar el rebote entre ambos.

Ahora, si quieres seguir aprendiendo sobre programación y el desarrollo de videojuegos con la librería de Pygame en Python, te recomendamos seguir realizando ejercicios prácticos. Por tanto, si necesita la guía de un programador profesional para hacerlo, queremos que conozcas el programa de Aprende a Programar desde Cero Full Stack Jr. Bootcamp. Esta formación intensiva para dar los primeros pasos en el sector IT te asegurará convertirte en un programador en pocos meses. ¡Apúntate y sigue programando!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Apúntate y consigue uno de los perfiles más demandados con Python en solo 4 meses.