Uno de los elementos más importantes para la realización del juego es el control de los personajes, para ello disponemos de varios elementos de entrada como el teclado, el mouse o el joystick, de momento en este tutorial trataremos los dos primeros para demostrar como funcionan.

Empecemos primero aprendiendo a como mover imágenes con el teclado.

Empezamos declarando una variable dentro del bucle que contiene un manejador de eventos para el teclado.

pulsada = pygame.key.get_pressed()

Justo debajo de eso colocamos una serie de condicionales que usan la variable que acabamos de crear y como parámetro el código de la tecla. Estos códigos los encontramos en Pygame.key (enlace a la documentación). Entonces, si por ejemplo presionamos la tecla “W” que corresponde al eje “Y” disminuimos el valor de a poco y así sucesivamente.

if pulsada[K_w]:
        y -= 5
    if pulsada[K_a]:
        x -= 5
    if pulsada[K_s]:
        y += 5
    if pulsada[K_d]:
        x += 5

Debemos saber que en computación (en la pantalla del ordenador) no hablamos de un plano cartesiano completo, si no de la parte inferior, ubicándonos desde la esquina superior izquierda de la misma y declarando allí el punto 0 (cero).

Ejes de la pantalla ara videojuegos

posteriormente esto se imprime en la pantalla. Dos parámetros en el blit, la imagen y las variables de las posiciones, las cuales cambiarán cuando presionemos una teclado y así se hará actualizando la pantalla. Claro, no hay que olvidar que siempre debe haber un update al final.

pantalla.blit(imagen, (x,y))

Mover imágenes con el mouse (ratón)

Otro de los elementos de entrada que nos permite controlar Pygame es el mouse. La referencia de este la podemos encontrar en Pygame.mouse, allí estará toda la documentación. Pero para aprender a usarla veamos algo simple, dentro del bucle podemos usar esto:

pantalla.blit(imagen, (a,b))
a,b = pygame.mouse.get_pos()

Donde “a” y “b” tiene un valor inicial cualquier que corresponder a las posiciones X e Y. Veamos un código de ejemplo que nos permite mover una imagen tanto con el teclado y luego con el mouse, pero antes, un concepto nuevo. Resulta que los ordenadores vienen con hardware distinto, memoria ram, procesador, etc; lo que hace que sea totalmente desconocido cual será la velocidad con la que se ejecutará nuestro juego, para eso existen distintas soluciones, en este tutorial limitaremos los fotogramas por segundo usando el módulo Pygame.time, así que fuera del bucle ponemos:

reloj = pygame.time.Clock()

Y ya dentro del bucle accedemos a sus métodos y le pasamos como parámetro el número de fotogramas por segundo. Todo también varia según la resolución de la pantalla y como configuremos el juego.

reloj.tick(25)

Mover imágenes con el teclado:

import pygame
from pygame.locals import *
 
pygame.init()
 
pantalla = pygame.display.set_mode((320,240),0,32)
imagen = pygame.image.load("mario.png")
 
x = 10
y = 10
 
reloj = pygame.time.Clock()
while True:
    for eventos in pygame.event.get():
        if eventos.type == pygame.QUIT:
            exit()
    pulsada = pygame.key.get_pressed()
 
    if pulsada[K_w]:
        y -= 5
    if pulsada[K_s]:
        y += 5
    if pulsada[K_a]:
        x -= 5
    if pulsada[K_d]:
        x += 5
    reloj.tick(25)
    pantalla.fill((0,0,0))
    pantalla.blit(imagen,(x,y))
    pygame.display.update()

Mover imágenes con el mouse:

import pygame
from pygame.locals import *
 
pygame.init()
 
pantalla = pygame.display.set_mode((320,240),0,32)
imagen = pygame.image.load("mario.png")
 
x = 10
y = 10
 
reloj = pygame.time.Clock()
while True:
    for eventos in pygame.event.get():
        if eventos.type == pygame.QUIT:
            exit()
 
    reloj.tick(25)
    pantalla.fill((0,0,0))
    pantalla.blit(imagen,(x,y))
    x,y = pygame.mouse.get_pos()
    pygame.display.update()