Hola a tod@s, como he comentado en anteriores post, vamos a volver a pygame, este módulo capaz de gestionar juegos en python, doy por sentado que os habéis mirado los anteriores post relacionados con pygame.
Bueno, nos quedamos poniendo una imagen de fondo, creando un pingüino y haciendo que se moviera automáticamente por pantalla, esta vez vamos a ir un poquito mas allá, vamos a controlar dicho pingüino con el teclado como en cualquier juego normal, antes de nada, vamos a poner el código que llevamos hasta ahora:
#!/usr/bin/python #importamos modulos import sys import pygame from pygame.locals import * #definimos constantes altura=640 anchura=480 def main(): #variables locales x=550 y=220 #iniciamos pygame pygame.init() #creamos una ventana ventana=pygame.display.set_mode((altura, anchura)) #definimos un titulo para la ventana pygame.display.set_caption("probando pygame...") #cargamos imagenes fondo=pygame.image.load("fondo.jpg").convert() tux=pygame.image.load("tux.png").convert_alpha() #loop del juego while True: x-=1 y+=1 ventana.blit(fondo, (0, 0)) ventana.blit(tux, (x, y)) pygame.display.flip() #posibles entradas del teclado for eventos in pygame.event.get(): if eventos.type==pygame.QUIT: sys.exit() if __name__=="__main__": main()
Para gestionar el teclado usaremos el método key.get_pressed()
teclado=pygame.key.get_pressed()
Lo que hacemos es asignar al identificador "teclado" el nombre de la tecla que estamos pulsado para después compararla a través de "if", para moverlo, hacemos como en el anterior post, "jugar" con los valores de x e y.
if teclado[K_RIGHT]: x+=1 ventana.blit(tux, (x, y)) if teclado[K_LEFT]: x-=1 ventana.blit(tux, (x, y)) if teclado[K_UP]: y-=1 ventana.blit(tux, (x, y)) if teclado[K_DOWN]: y+=1 ventana.blit(tux, (x, y))Cada tecla tiene un nombre diferente, en este caso son solo cuatro:
K_RIGHT: Flecha derecha
K_LEFT: Flecha izquierda
K_UP: Flecha arriba
K_DOWN: Flecha abajo
Entonces si añadimos este último código a lo que ya teníamos en el anterior post, se nos queda algo así:
#!/usr/bin/python #importamos modulos import sys import pygame from pygame.locals import * #definimos constantes altura=640 anchura=480 def main(): #variables locales speed=1 x=550 y=220 #iniciamos pygame pygame.init() #creamos una ventana ventana=pygame.display.set_mode((altura, anchura)) #definimos un titulo para la ventana pygame.display.set_caption("probando pygame...") #cargamos imagenes fondo=pygame.image.load("fondo.jpg").convert() tux=pygame.image.load("tux.png").convert_alpha() #loop del juego while True: teclado=pygame.key.get_pressed() if teclado[K_RIGHT]: x+=speed if teclado[K_LEFT]: x-=speed if teclado[K_UP]: y-=speed if teclado[K_DOWN]: y+=speed ventana.blit(fondo, (0, 0)) ventana.blit(tux, (x, y)) pygame.display.flip() #posibles entradas del teclado for eventos in pygame.event.get(): if eventos.type==pygame.QUIT: sys.exit() if __name__=="__main__": main()
Cuando lo ejecutéis podréis observar que podemos mover el pingüino con las flechas de dirección libremente por la pantalla, que ya no anda por su cuenta, si no que lo movemos nosotros.
Con la variable "speed" se puede cambiar la velocidad del pingüino.
Si queréis todas las teclas para usar con la función key.get_pressed(), entrad a la página oficial de Pygame desde aquí
Hasta el siguiente tutorial, un abrazo a tod@s.
3 comentarios:
Lo explicas muy bien . me sacaste unas cuantas dudas!
Espero algun dia poder hacer un juego como la imagen del anterior post.
Espero que sigas posteando mas!
Gracias Ignacio.
En cuanto a lo de hacer un juego como en la foto del anterior posts, pues la verdad es muy dificil, ya que tendríamos que crear un motor para que gestione el sistema de baldosas o cojer uno ya hecho...
Pero bueno, como poder se puede, poco a poco.
Un abrazo a tod@s.
Hola!...
Todo Funciona muy bien... tengo un programa y al hacer el QUIT me manda un error, me podrias explicar a que se debe, igual si pongo el sys.exit() me manda una traza de error.
Publicar un comentario