PyGame es una biblioteca de python de código abierto y gratuito que se utiliza para diseñar videojuegos. En este artículo, aprenderemos cómo podemos agregar diferentes animaciones a nuestros personajes.
Animación sencilla
Podemos agregar fácilmente animaciones simples en nuestros proyectos de pygame siguiendo los pasos a continuación.
- Crear una lista de sprites
- Iterar sobre la lista
- Mostrar el sprite en la pantalla
A continuación se muestra la implementación:
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)) # Create a list of different sprites # that you want to use in the animation image_sprite = [pygame.image.load("Sprite1.png"), pygame.image.load("Sprite2.png")] # Creating a new clock object to # track the amount of time clock = pygame.time.Clock() # Creating a new variable # We will use this variable to # iterate over the sprite list value = 0 # 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 3fps just # to see the result properly clock.tick(3) # Setting 0 in value variable if its # value is greater than the length # of our sprite list if value >= len(image_sprite): value = 0 # Storing the sprite image in an # image variable image = image_sprite[value] # Creating a variable to store the starting # x and y coordinate x = 150 # Changing the y coordinate # according the value stored # in our value variable if value == 0: y = 200 else: y = 265 # Displaying the image in our game window window.blit(image, (x, y)) # Updating the display surface pygame.display.update() # Filling the window with black color window.fill((0, 0, 0)) # Increasing the value of value variable by 1 # after every iteration value += 1
Producción:
Explicación:
- Crear un objeto de superficie de visualización de una dimensión específica
- Luego cree una lista de diferentes sprites que desea usar en la animación y luego cree un nuevo objeto de reloj para rastrear la cantidad de tiempo.
- Cree una variable booleana que usaremos para ejecutar el ciclo while y luego cree un ciclo infinito para ejecutar nuestro juego. Establecer la velocidad de fotogramas en 3 fps solo para ver el resultado correctamente. Establezca 0 en la variable de valor si su valor es mayor que la longitud de nuestra lista de sprites.
- Almacene la imagen del sprite en una variable de imagen y luego cree una variable para almacenar las coordenadas x e y iniciales. Cambie la coordenada y según el valor almacenado en nuestra variable de valor.
- Luego muestre la imagen en nuestra ventana de juego y actualice la superficie de visualización, y llene la ventana con color negro.
Animación en movimiento
Si solo desea mostrar la animación cuando su personaje se está moviendo o cuando un usuario presiona un botón específico, puede hacerlo siguiendo estos pasos:
- Crea una variable para comprobar si el personaje se mueve o no.
- Crear una lista de sprites
- Si el personaje se está moviendo, repita la lista de sprites y muestre los sprites en la pantalla.
- Si el personaje no se mueve, muestra el sprite almacenado en el índice 0 de la lista.
Imágenes utilizadas:
A continuación se muestra la implementación:
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)) # Create a list of different sprites # that you want to use in the animation image_sprite = [pygame.image.load("Sprite1.png"), pygame.image.load("Sprite2.png"), pygame.image.load("Sprite3.png"), pygame.image.load("Sprite4.png")] # Creating a new clock object to # track the amount of time clock = pygame.time.Clock() # Creating a new variable # We will use this variable to # iterate over the sprite list value = 0 # Creating a boolean variable that # we will use to run the while loop run = True # Creating a boolean variable to # check if the character is moving # or not moving = False # Creating a variable to store # the velocity velocity = 12 # Starting coordinates of the sprite x = 100 y = 150 # Creating an infinite loop # to run our game while run: # Setting the framerate to 10fps just # to see the result properly clock.tick(10) # iterate over the list of Event objects # that was returned by pygame.event.get() method. for event in pygame.event.get(): # Closing the window and program if the # type of the event is QUIT if event.type == pygame.QUIT: run = False pygame.quit() quit() # Checking event key if the type # of the event is KEYUP i.e. # keyboard button is released if event.type == pygame.KEYUP: # Setting the value of moving to False # and the value f value variable to 0 # if the button released is # Left arrow key or right arrow key if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: moving = False value = 0 # Storing the key pressed in a # new variable using key.get_pressed() # method key_pressed_is = pygame.key.get_pressed() # Changing the x coordinate # of the player and setting moving # variable to True if key_pressed_is[K_LEFT]: x -= 8 moving = True if key_pressed_is[K_RIGHT]: x += 8 moving = True # If moving variable is True # then increasing the value of # value variable by 1 if moving: value += 1 # Setting 0 in value variable if its # value is greater than the length # of our sprite list if value >= len(image_sprite): value = 0 # Storing the sprite image in an # image variable image = image_sprite[value] # Scaling the image image = pygame.transform.scale(image, (180, 180)) # Displaying the image in our game window window.blit(image, (x, y)) # Updating the display surface pygame.display.update() # Filling the window with black color window.fill((0, 0, 0))
Producción:
Explicación:
- Cree un objeto de superficie de visualización de una dimensión específica y luego cree una lista de diferentes sprites que desea usar en la animación.
- Cree un nuevo objeto de reloj para realizar un seguimiento de la cantidad de tiempo y cree una nueva variable. Usaremos esta variable para iterar sobre la lista de sprites. Cree una variable booleana que usaremos para ejecutar el ciclo while y cree una variable booleana para verificar si el personaje se está moviendo o no, cree una variable para almacenar las coordenadas iniciales de velocidad del sprite y cree un ciclo infinito para ejecutar nuestro juego y establezca la velocidad de fotogramas en 10 fps solo para ver el resultado correctamente, repita la lista de objetos de evento que devolvió el método pygame.event.get(). Cierra la ventana y programa si el tipo de evento es SALIR.
- Comprobación de la tecla de evento si el tipo de evento es KEYUP, es decir, se suelta el botón del teclado y establece el valor de movimiento en Falso y el valor de la variable de valor pf en 0 si el botón liberado es la tecla de flecha izquierda o la tecla de flecha derecha.
- Almacene la tecla presionada en una nueva variable usando el método key.get_pressed(). Cambie la coordenada x del jugador y establezca la variable móvil en Verdadero. Si la variable móvil es Verdadera, entonces aumenta el valor de la variable de valor en 1. Establezca 0 en la variable de valor si su valor es mayor que la longitud de nuestra lista de sprites. Guarde la imagen del sprite en una variable de imagen y luego escale la imagen
Publicación traducida automáticamente
Artículo escrito por imranalam21510 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA