La creación de sprites nos permitirá trabajar de una forma más cómoda con objetos que creemos en el videojuego ya que podremos acceder a propiedades muy interesantes y asimismo trabajar con programación orientada a objetos de manera más simple.

sprite1 = pygame.sprite.Sprite()
sprite1.image = imagen

Luego de lo anterior el blit lo podemos hacer a sprite1.image para mostrar a nuestro personaje. Por otro lado si queremos hacer movimientos con el teclado por ejemplo, disponemos de otras propiedades modificables como las siguientes:

sprite1.rect = imagen.get_rect()
sprite1.rect.top = y
sprite1.rect.left = x

La primera linea es para obtener una recta para posteriormente utilizarla en algún sistema de colisiones, las otras dos líneas definen la posición en el Top y en el Left, las cuales podemos usar para movimiento del teclado de la siguiente manera:

    pulsada = pygame.key.get_pressed()
    if pulsada[K_w]:
        sprite1.rect.top -= 5
    if pulsada[K_a]:
        sprite1.rect.left -= 5
    if pulsada[K_s]:
        sprite1.rect.top += 5
    if pulsada[K_d]:
        sprite1.rect.left += 5

Y en el blit podríamos hacer algo como usar la recta en vez de imprimir directamente las variables X e Y:

pantalla.blit(sprite1.image, sprite1.rect)

Veamos un código de ejemplo en el que se mueve un sprite 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
 
sprite1 = pygame.sprite.Sprite()
sprite1.image = imagen
 
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(sprite1.image,(x,y))
    x,y = pygame.mouse.get_pos()
    pygame.display.update()