Vamos a crear un juego donde podamos mover el personaje pulsando en nuestro teclado.
Primero creamos la estructura del juego y las clases con los personajes.
import pygame
pygame.init()
class Girl(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.image.load("E:/NUEVO 2020/PYTHON/pygame/girl.png").convert_alpha()
self.rect=self.image.get_rect()
#Ventana y título
ventana = pygame.display.set_mode((800,700))
pygame.display.set_caption('Mover con el teclado')
fondo =pygame.image.load("E:/NUEVO 2020/PYTHON/pygame/fondonubes.png").convert_alpha()
clock=pygame.time.Clock()
#------------Listas--------------
x = 50
y = 480
vel = 0
girlLista=pygame.sprite.Group()
girl =Girl()
girlLista.add(girl)
#/////////////////Bucle del juego/////////////////
gameOver=False
while not gameOver:
for event in pygame.event.get():
Creada la clase con el personaje, la ventana de juego con el fondo y guardo el objeto en una lista.
Abro el bucle del juego para introducir las instrucciones de teclado.
#----------- pulsar teclas y soltar tecla
if event.type == pygame.KEYDOWN: #Si pulso teclado añado velocidad
if event.key == pygame.K_LEFT:
vel=-3
if event.key == pygame.K_RIGHT:
vel=3
else:
vel=0
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
vel=0
if event.key == pygame.K_RIGHT:
vel=0
if event.type == pygame.QUIT:
gameOver=True
Con un condicional defino si las teclas están pulsadas o no.
Dentro del condicional KEYDOWN doy valor -3 o 3 a la variable «vel»
Si levanto el dedo de la tecla la variable «vel» vuelve a valor cero.
Cómo voy a mover el objeto solo en el eje de las X, aplico la variable «vel» solo a la x.
#------------ LOGICA -------------------
girl.rect.x=x
girl.rect.y=y
x += vel
if x < 0:
x=0
if x>800-90:
x=800-90
Ya solo me queda dibujar el fondo, la lista y cerrar el juego.
#-------------FONDO---------------------
ventana.blit(fondo, [0,0])
#------------ DIBUJO ------------------
girlLista.draw(ventana)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Juande Marín
Profesor de Marketing digital, divulgador de inteligencia artificial y neuroeducación. Especializado en posicionamiento en buscadores y diseño web. Autor de varios libros relacionados con el comercio electrónico y el marketing digital (McGraw Hill, Paraninfo,…) Juande2marin