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