Prerrequisitos: Pygame
Pygame es un conjunto multiplataforma de módulos Python diseñados para escribir videojuegos. Incluye gráficos por computadora y bibliotecas de sonido diseñadas para usarse con el lenguaje de programación Python. Puede crear diferentes tipos de juegos usando pygame, incluidos juegos de arcade, juegos de plataformas y muchos más.
Imágenes en uso:
Puedes controlar el movimiento de tu jugador. Para esto, primero cree un objeto de superficie de visualización usando el método display.set_mode() de pygame y agregue el sprite del jugador usando el método image.load() de pygame. La función set_mode() se utiliza para inicializar una superficie o ventana de visualización. El argumento de tamaño es un par de números que representan el ancho y el alto. El argumento flags es una colección de opciones adicionales. El argumento de profundidad representa el número de bits a utilizar para el color.
Sintaxis:
set_mode(tamaño=(0, 0), banderas=0, profundidad=0, pantalla=0, vsync=0)
Crea una variable para almacenar la velocidad del jugador. Establece las coordenadas iniciales del jugador. Ahora, cambie las coordenadas x e y del reproductor de acuerdo con los eventos del teclado, es decir, eventos que ocurren cuando cambia el estado de la tecla.
La función blit (superficie, superficie recta) se utiliza para dibujar las imágenes en la pantalla.
Sintaxis:
blit(superficie, superficierect)
Para recopilar todos los eventos de la cola se usa la función get() del módulo de eventos, luego estamos iterando sobre todos los eventos usando un bucle for.
Sintaxis:
obtener (tipo de evento = ninguno)
Actualización de la pantalla mediante la función actualizar() del módulo de visualización.
Sintaxis:
actualizar (rectángulo = ninguno)
A continuación se muestra la implementación.
Ejemplo: Programa para movimiento de jugadores
Python3
# Importing pygame module import pygame from pygame.locals import * # initiate pygame and give permission # to use pygame's functionality. pygame.init() # create the display surface object # of specific dimension. window = pygame.display.set_mode((600, 600)) # Add caption in the window pygame.display.set_caption('Player Movement') # Add player sprite image = pygame.image.load(r'Player_image.png') # Store the initial # coordinates of the player in # two variables i.e. x and y. x = 100 y = 100 # Create a variable to store the # velocity of player's movement velocity = 12 # Creating an Infinite loop run = True while run: # Filling the background with # white color window.fill((255, 255, 255)) # Display the player sprite at x # and y coordinates window.blit(image, (x, y)) # 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 KEYDOWN i.e. # keyboard button is pressed if event.type == pygame.KEYDOWN: # Decreasing the x coordinate # if the button pressed is # Left arrow key if event.key == pygame.K_LEFT: x -= velocity # Increasing the x coordinate # if the button pressed is # Right arrow key if event.key == pygame.K_RIGHT: x += velocity # Decreasing the y coordinate # if the button pressed is # Up arrow key if event.key == pygame.K_UP: y -= velocity # Increasing the y coordinate # if the button pressed is # Down arrow key if event.key == pygame.K_DOWN: y += velocity # Draws the surface object to the screen. pygame.display.update()
Producción:
El jugador también se puede mover en un movimiento continuo. Para esto, todo lo demás permanece igual, excepto que se deben realizar algunos cambios. Aquí estamos creando un nuevo objeto de reloj para controlar la velocidad de fotogramas del juego usando clock().
Sintaxis:
Reloj()
Se crea una nueva variable (llamada key_pressed_is) para almacenar la tecla presionada por el usuario. Para esto, estamos usando la función get_pressed() del módulo de teclas.
Sintaxis:
obtener_presionado()
Devuelve una secuencia de valores booleanos que representan el estado de cada tecla del teclado.
Ejemplo: Mover jugadores en movimiento continuo
Python3
# Importing pygame module import pygame from pygame.locals import * # initiate pygame and give permission # to use pygame's functionality. pygame.init() # create the display surface object # of specific dimension. window = pygame.display.set_mode((600, 600)) # Add caption in the window pygame.display.set_caption('Player Movement') # Initializing the clock # Clocks are used to track and # control the frame-rate of a game clock = pygame.time.Clock() # Add player sprite image = pygame.image.load(r'Player_image.png') # Store the initial # coordinates of the player in # two variables i.e. x and y. x = 100 y = 100 # Create a variable to store the # velocity of player's movement velocity = 12 # Creating an Infinite loop run = True while run: # Set the frame rates to 60 fps clock.tick(60) # Filling the background with # white color window.fill((255, 255, 255)) # Display the player sprite at x # and y coordinates window.blit(image, (x, y)) # 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() # Storing the key pressed in a # new variable using key.get_pressed() # method key_pressed_is = pygame.key.get_pressed() # Changing the coordinates # of the player if key_pressed_is[K_LEFT]: x -= 8 if key_pressed_is[K_RIGHT]: x += 8 if key_pressed_is[K_UP]: y -= 8 if key_pressed_is[K_DOWN]: y += 8 # Draws the surface object to the screen. pygame.display.update()
Producción:
Voltear el sprite del jugador
Puede voltear fácilmente cualquier sprite usando la función flip() del módulo de transformación del pygame. Por ejemplo, si queremos voltear el sprite cada vez que el jugador cambia la dirección del movimiento, podemos usar la siguiente línea
ventana.blit(pygame.transform.flip(imagen, Falso, Verdadero), (x,y))
flip() fsed para voltear el objeto de superficie horizontalmente, verticalmente. o ambos. Esta función tiene tres parámetros:
- Imagen para voltear
- Valor booleano para hacer un giro horizontal
- Valor booleano para hacer un giro vertical
A continuación se muestra la implementación.
Ejemplo: voltear la imagen del jugador
Python3
# Importing pygame module import pygame from pygame.locals import * # initiate pygame and give permission # to use pygame's functionality. pygame.init() # create the display surface object # of specific dimension. window = pygame.display.set_mode((600, 600)) # Add caption in the window pygame.display.set_caption('Player Movement') # Initializing the clock # Clocks are used to track and # control the frame-rate of a game clock = pygame.time.Clock() # creating a variable to check the direction # of movement # We will change its value whenever # the player changes its direction direction = True # Add player sprite image = pygame.image.load(r'Player_image.png') # Store the initial # coordinates of the player in # two variables i.e. x and y. x = 100 y = 100 # Create a variable to store the # velocity of player's movement velocity = 12 # Creating an Infinite loop run = True while run: # Set the frame rates to 60 fps clock.tick(60) # Filling the background with # white color window.fill((255, 255, 255)) # Display the player sprite at x # and y coordinates # Flipping the player sprite if player # changes the direction if direction == True: window.blit(image, (x, y)) if direction == False: window.blit(pygame.transform.flip(image, True, False), (x, y)) # 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() # Changing the value of the # direction variable if event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT: direction = True elif event.key == pygame.K_LEFT: direction = False # Storing the key pressed in a # new variable using key.get_pressed() # method key_pressed_is = pygame.key.get_pressed() # Changing the coordinates # of the player if key_pressed_is[K_LEFT]: x -= 5 if key_pressed_is[K_RIGHT]: x += 5 if key_pressed_is[K_UP]: y -= 5 if key_pressed_is[K_DOWN]: y += 5 # Draws the surface object to the screen. pygame.display.update()
Producción:
También podemos actualizar fácilmente el sprite del jugador creando una lista de sprites.
imagen = [pygame.image.load(r’Player_image1.png’),
pygame.image.load(r’Player_image2.png’)]
Ejemplo: Actualización de sprites
Python3
# Importing pygame module import pygame from pygame.locals import * # initiate pygame and give permission # to use pygame's functionality. pygame.init() # create the display surface object # of specific dimension. window = pygame.display.set_mode((600, 600)) # Add caption in the window pygame.display.set_caption('Player Movement') # Initializing the clock # Clocks are used to track and # control the frame-rate of a game clock = pygame.time.Clock() # creating a variable to check the direction # of movement # We will change its value whenever # the player changes its direction direction = True # Add player sprites in a list image = [pygame.image.load(r'Player_image1.png'), pygame.image.load(r'Player_image2.png')] # Store the initial # coordinates of the player in # two variables i.e. x and y. x = 100 y = 100 # Create a variable to store the # velocity of player's movement velocity = 12 # Creating an Infinite loop run = True while run: # Set the frame rates to 60 fps clock.tick(60) # Filling the background with # white color window.fill((255, 255, 255)) # Display the player sprite at x # and y coordinates # Changing the player sprite if player # changes the direction if direction == True: window.blit(image[0], (x, y)) if direction == False: window.blit(image[1], (x, y)) # 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() # Changing the value of the # direction variable if event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT: direction = True elif event.key == pygame.K_LEFT: direction = False # Storing the key pressed in a # new variable using key.get_pressed() # method key_pressed_is = pygame.key.get_pressed() # Changing the coordinates # of the player if key_pressed_is[K_LEFT]: x -= 5 if key_pressed_is[K_RIGHT]: x += 5 if key_pressed_is[K_UP]: y -= 5 if key_pressed_is[K_DOWN]: y += 5 # Draws the surface object to the screen. pygame.display.update()
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