Agregar límite a un objeto en Pygame

Los límites de cualquier juego son muy importantes. En los juegos de serpientes, los invasores del espacio, el juego de ping pong, etc., la condición límite es muy importante. La pelota rebota en los límites de la pantalla en los juegos de ping pong.

Entonces, la idea detrás de estos límites es cambiar la posición de la pelota o el objeto en dirección inversa tan pronto como golpea la pared.

Veamos cómo agregar un límite para un juego en el que una pelota rebota fuera de ese límite.

1. En primer lugar, haremos la ventana de PyGame.

# importing the module
import pygame
  
# instantiating the class
pygame.init()
   
# dimension of the screen
width = 700
height = 550
   
# colours
white = (255, 255, 255)
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)
black = (0, 0, 0)
   
# creating a Screen
screen = pygame.display.set_mode((width, height))
  
# title of the screen
pygame.display.set_caption("Bouncy Ball")

2. Ahora, estamos creando una pelota. La pelota es solo un círculo dibujado en la pantalla. Eso se escribirá en un bucle while. Aquí estamos declarando su posición y su velocidad. Inicialmente, la bola se colocará en el centro (ancho/2 y alto/2). Luego aumentaremos la velocidad de la pelota por los respectivos valores de XChange e YChange. A medida que cambian las direcciones X e Y, la pelota se moverá en dirección diagonal y su trayectoria posterior dependerá del cuerpo que choca.

# importing the module
import random
  
# declaring variables for the ball
ball_X = width/2 - 12
ball_Y = height/2 - 12
ball_XChange = 3* random.choice((1, -1))
ball_YChange = 3
ballPixel = 24

3. Ahora comenzaremos el ciclo básico de ejecución del juego. También le estamos dando un color de fondo a nuestra pantalla.

# gaming Loop
running = True
while running:
  
    # background color
    screen.fill(red)
  
    # to exit the loop
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

4. Aquí viene la mayor parte de nuestro juego. Estamos proporcionando una condición de que si la Posición X de la pelota es mayor que el ancho de la pantalla o menor que 0 (es decir, si la pelota choca o viene por el extremo derecho o izquierdo de la pantalla), entonces multiplicamos la velocidad de la dirección X por 1 negativo. Significa que se invierte el sentido. Si la pelota viene a una velocidad de 3 píxeles, al chocar contra la pared izquierda o derecha, su velocidad será -3 píxeles, es decir, en la dirección inversa, y nuevamente cuando golpea las paredes, su velocidad nuevamente será positiva. 3, es decir, al revés de -3. Por lo tanto, esto le dará un límite a una pelota.

Además, se aplicará la misma lógica para la pared superior e inferior.

Si el valor Y de la pelota es mayor que la altura de la pantalla o menor que 0, invierta su dirección.
Y luego movemos la bola incrementando la posición de la bola en XChange y YChange respectivamente.

(el código a continuación está debajo del bucle de juego)

# inside the gaming Loop
  
    # bouncing the ball
    if ball_X + ballPixel >= width or ball_X <= 0:
        ball_XChange *= -1
    if ball_Y + ballPixel >= height or ball_Y <= 0:
        ball_YChange *= -1
  
    # moving the ball
    ball_X += ball_XChange
    ball_Y += ball_YChange

5. Ahora, dibujaremos la pelota en el bucle while para que se muestre en cada bucle. Estamos dibujando el círculo en la posición ballX y ballY, de modo que las posiciones X e Y de la pelota se incrementan en cada ciclo y la pelota se dibujará en la siguiente posición en cada ciclo y, por lo tanto, la pelota se moverá dentro de la pantalla. Y al final actualizamos la pantalla.

# inside the gaming Loop
  
    # drawing the ball
    ballImg = pygame.draw.circle(screen, (0,0,255),
                                 (int(ball_X), int(ball_Y)),
                                 15)
    pygame.display.update()

Así es como agregamos un límite a un objeto en PyGame.

El código completo es el siguiente:

# importing the modules
import pygame
import random
   
# instantiating the class
pygame.init()
    
# dimension of the screen
width = 700
height = 550
    
# colours
white = (255, 255, 255)
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)
black = (0, 0, 0)
    
# creating a Screen
screen = pygame.display.set_mode((width, height))
   
# title of the screen
pygame.display.set_caption("Bouncy Ball")
  
# declaring variables for the ball
ball_X = width/2 - 12
ball_Y = height/2 - 12
ball_XChange = 3* random.choice((1, -1))
ball_YChange = 3
ballPixel = 24
   
# gaming Loop
running = True
while running:
   
    # background color
    screen.fill(red)
   
    # to exit the loop
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
  
    # bouncing the ball
    if ball_X + ballPixel >= width or ball_X <= 0:
        ball_XChange *= -1
    if ball_Y + ballPixel >= height or ball_Y <= 0:
        ball_YChange *= -1
       
    # moving the ball
    ball_X += ball_XChange
    ball_Y += ball_YChange
  
    # drawing the ball
    ballImg = pygame.draw.circle(screen, (0,0,255),
                                 (int(ball_X), int(ball_Y)),
                                 15)
    pygame.display.update()

Producción :

Publicación traducida automáticamente

Artículo escrito por ameyajain_25 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *