En esta ocasión vamos a crear un juego que mueva al personaje con el teclado y salte en parábola.
Comenzamos por inicializar pygame, creamos la clase con el personaje, definimos las variables con valores de inicio, configuramos la ventana, definimos la lista de objetos y abrimos el bucle del juego.
import pygame
pygame.init()
class Girl(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.image.load("E:/NUEVO 2020/PYTHON/pygame/jaime.png").convert_alpha()
self.rect=self.image.get_rect()
x=50
y=440
width=5
height=5
vel=5
jumpCount=10
#Ventana y título
ventana = pygame.display.set_mode((800,700))
pygame.display.set_caption('Cada oveja con su pareja')
fondo =pygame.image.load("E:/NUEVO 2020/PYTHON/pygame/fondonubes.png").convert()
clock=pygame.time.Clock()
#------------Listas--------------
girlLista=pygame.sprite.Group()
girl =Girl()
girlLista.add(girl)
#/////////////////Bucle del juego/////////////////
gameOver=False
while not gameOver:
pygame.time.delay(50)
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameOver=True
Ahora para dar movimiento vamos a dar valores a X e Y cuando pulsemos el teclado con las flechas.
#------------ LOGICA -------------------
girl.rect.x=x
girl.rect.y=y
keys=pygame.key.get_pressed()
if keys[pygame.K_LEFT] and x > vel:
x = x-vel
if keys[pygame.K_RIGHT] and x <800-vel-width:
x +=vel
if isJump:
if jumpCount>= -10:
y -= (jumpCount * abs(jumpCount)) *0.5
jumpCount-=1
else:
jumpCount = 10
isJump=False
else:
if keys[pygame.K_SPACE]:
isJump=True
Si pulsamos la tecla izquierda y la variable x y el personaje está dentro de la ventana, entonces restamos a la X el valor de «vel».
De inicio la variable isJump es TRUE por lo que con el condicional estoy impidiendo que durante el salto se pueda habilitar la tecla espacio.
Solo cuando jumpCount valga 10 vamos a poder pulsar la tecla SPACE para iniciar un nuevo salto.
Cerramos el juego y listo
#-------------FONDO---------------------
ventana.blit(fondo, [0,0])
#------------ DIBUJO ------------------
girlLista.draw(ventana)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Este es el resultado:
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