Cómo agregar plataformas móviles en PyGame

Prerrequisito: Dibujar en Pygame

En este artículo, aprenderemos cómo podemos agregar plataformas móviles a nuestro juego usando PyGame en Python.

Crear una plataforma

Podemos crear fácilmente cualquier tipo de plataforma en pygame usando el método draw(). Para esto, crearemos una reacción con ancho y alto específicos usando la función draw.rect().

Sintaxis: pygame.draw.rect(superficie, color, rect, ancho)

Parámetros:

  • superficie : Aquí podemos pasar la superficie sobre la que queremos dibujar nuestro rectángulo.
  • color : Aquí podemos pasar el color de nuestro rectángulo.
  • rect : Aquí podemos pasar el rectángulo, la posición y las dimensiones.
  • width : Aquí podemos pasar el grosor de la línea. también podemos crear un rectángulo sólido cambiando el valor de este parámetro de ancho.

Código:

Python3

# Importing the pygame module
import pygame
from pygame.locals import *
 
# Initiate pygame and give permission
# to use pygame's functionality
pygame.init()
 
# Create a display surface object
# of specific dimension
window = pygame.display.set_mode((600,600))
 
# Creating a new clock object to
# track the amount of time
clock = pygame.time.Clock()
 
# Starting coordinates of the platform
x = 100
y = 150
 
# Creating a rect with width
# and height
rect = Rect(x, y, 200, 50)
 
# Creating a boolean variable that
# we will use to run the while loop
run = True
 
# Creating an infinite loop
# to run our game
while run:
 
    # Setting the framerate to 30fps
    clock.tick(30)
 
    # Drawing the rect on the screen using the
    # draw.rect() method
    pygame.draw.rect(window, (255, 0, 0),rect)
     
    # Updating the display surface
    pygame.display.update()
 
    # Filling the window with white color
    window.fill((255,255,255))

Producción:

Mover la plataforma

Para mover la plataforma podemos crear una variable de velocidad con algún valor numérico y podemos agregar esa velocidad a la coordenada x de nuestra plataforma. Después de eso, multiplicaremos la variable velocidad por -1 si su coordenada x es menor a 100 o mayor o igual a 300.

Código:

Python3

# Importing the pygame module
import pygame
from pygame.locals import *
 
# Initiate pygame and give permission
# to use pygame's functionality
pygame.init()
 
# Create a display surface object
# of specific dimension
window = pygame.display.set_mode((600,600))
 
 
# Creating a new clock object to
# track the amount of time
clock = pygame.time.Clock()
 
# Variable to store the
# velocity of the platform
platform_vel = 5
 
# Starting coordinates of the platform
x = 100
y = 150
 
# Creating a rect with width
# and height
rect = Rect(x, y, 200, 50)
 
# Creating a boolean variable that
# we will use to run the while loop
run = True
 
 
# Creating an infinite loop
# to run our game
while run:
 
    # Setting the framerate to 30fps
    clock.tick(30)
 
    # Multiplying platform_vel with -1
    # if its x coordinate is less then 100
    # or greater than or equal to 300.
    if rect.left >=300 or rect.left<100:
        platform_vel*= -1
 
    # Adding platform_vel to x
    # coordinate of our rect
    rect.left += platform_vel
 
    # Drawing the rect on the screen using the
    # draw.rect() method
    pygame.draw.rect(window, (255,   0,   0),rect)
 
    # Updating the display surface
    pygame.display.update()
 
    # Filling the window with white color
    window.fill((255,255,255))

Producción:

Adición de Player Sprite y Collision

Ahora vamos a agregar nuestro reproductor y la colisión entre nuestro reproductor y la plataforma. Para esto, estamos usando el método colliderect().

Sintaxis: pygame.Rect.colliderect(rect1 , rect2)

Parámetros: Tomará dos rects como sus parámetros.

Devuelve verdadero si alguna parte de cualquiera de los rectángulos se superpone.

Si el jugador está chocando con la plataforma, estableceremos la coordenada de la parte inferior del jugador igual a la parte superior de la plataforma y luego agregaremos la velocidad de la plataforma. También estamos creando una variable de gravedad.

Código:

Python3

# Importing the pygame module
import pygame
from pygame.locals import *
 
# Initiate pygame and give permission
# to use pygame's functionality
pygame.init()
 
# Create a display surface object
# of specific dimension
window = pygame.display.set_mode((600,600))
 
# Creating a new clock object to
# track the amount of time
clock = pygame.time.Clock()
 
# Variable to store the
# velocity of the platform
platform_vel = 5
 
# Starting coordinates of the platform
x = 100
y = 150
 
# Starting coordinates for
# player sprite
player_x = 180
player_y = 0
 
# Creating a new variable
# for gravity
gravity = 8
 
# Creating a new rect for player
player_rect = Rect(player_x, player_y, 50, 50)
 
# Creating a rect with width
# and height
rect = Rect(x, y, 200, 50)
 
# Creating a boolean variable that
# we will use to run the while loop
run = True
 
# Creating an infinite loop
# to run our game
while run:
 
    # Setting the framerate to 30fps
    clock.tick(30)
 
    # Multiplying platform_vel with -1
    # if its x coordinate is less then 100
    # or greater than or equal to 300.
    if rect.left >=300 or rect.left<100:
        platform_vel*= -1
 
    # Checking if player is colliding
    # with platform or not using the
    # colliderect() method.
    # It will return a boolean value
    collide = pygame.Rect.colliderect(rect, player_rect)
 
    # If player is colliding with
    # platform then setting coordinate
    # of player bottom equal to top of platform
    # and adding the platform velocity
    if collide:
        player_rect.bottom = rect.top
        player_rect.left += platform_vel
 
    # Adding platform_vel to x
    # coordinate of our rect
    rect.left += platform_vel
 
    # Adding gravity
    player_rect.top += gravity
 
    # Drawing the rect on the screen using the
    # draw.rect() method
    pygame.draw.rect(window, (255,   0,   0),rect)
 
    # Drawing player rect
    pygame.draw.rect(window, (0,   255,   0),player_rect)
 
    # Updating the display surface
    pygame.display.update()
 
    # Filling the window with white color
    window.fill((255,255,255))

Producción:

Publicación traducida automáticamente

Artículo escrito por imranalam21510 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 *