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