<-- Back to list of examples
"""
Sample Python/Pygame Programs
Simpson College Computer Science
http://programarcadegames.com/
http://simpson.edu/computer-science/
"""
import pygame
# Definimos algunos colores
NEGRO = (0, 0, 0)
BLANCO = (255, 255, 255)
# Esta clase representa la protagonista
# Se deriva de la clase "Sprite" en Pygame
class Protagonista(pygame.sprite.Sprite):
joystick_cuenta = 0
# Constructor. Pasa el color del bloque así como la posición x, y
def __init__(self):
# Llama al constructor de la clase padre (Sprite)
super().__init__()
# Variables para almacenar el alto y largo del bloque
largo = 20
alto = 15
# Crea una imagen de la protagonista y la rellena de color-
# También podría ser una imagen guardada en disco.
self.image = pygame.Surface([largo, alto])
self.image.fill(NEGRO)
# Extrae el objeto rectángulo con las dimensiones de la imagen
self.rect = self.image.get_rect()
# Establece la posición inicial del sprite en 100,100
self.rect.x = 100
self.rect.y = 100
# Cuenta los joysticks conectados al ordenador
self.joystick_cuenta = pygame.joystick.get_count()
if self.joystick_cuenta == 0:
# No hay joysticks!
print ("Error, no he podido encontrar ningún joystick.")
else:
# Usa el joystick #0 y lo inicializa
self.mi_joystick = pygame.joystick.Joystick(0)
self.mi_joystick.init()
# Actualiza la posición de la protagonista
def update(self):
# Mientras exista un joystick
if self.joystick_cuenta != 0:
# Esto obtiene la posición del eje del controlador de juego
# Devuelve un número entre -1.0 y +1.0
horiz_axis_pos = self.mi_joystick.get_axis(0)
vert_axis_pos = self.mi_joystick.get_axis(1)
# Desplaza x en función del eje. Multiplicamos por 10 para acelerar el
#movimiento.
self.rect.x = self.rect.x+horiz_axis_pos*10
self.rect.y = self.rect.y+vert_axis_pos*10
pygame.init()
# Establece el alto y largo de la pantalla
dimensiones = [700,500]
pantalla = pygame.display.set_mode(dimensiones)
# Iteramos hasta que el usuario pulse sobre el botón de salida.
hecho = False
# Lo usamos para gestionar cuán rápido se actualiza la pantalla.
reloj = pygame.time.Clock()
# Esta es una lista de los 'sprites.' Cada protagonista en el programa (solo hay 1) es
# añadida a la lista. La lista es gestionada por la clase 'Group.'
lista_detodoslos_sprites = pygame.sprite.Group()
# Esto representa la protagonista controlada por el protagonista.
protagonista = Protagonista()
# Añadimos la protagonista a la lista de objetos controlados por el protagonista
lista_detodoslos_sprites.add(protagonista)
# -------- Bucle Principal -----------
while not hecho:
for evento in pygame.event.get():
if evento.type == pygame.QUIT:
hecho = True
# Limpiamos la pantalla
pantalla.fill(BLANCO)
# Actualizamos la posición de la protagonista (usando el ratón) y dibujamos la protagonista
lista_detodoslos_sprites.update()
lista_detodoslos_sprites.draw(pantalla)
# Limitado a 60 fotogramas por segundo (fps)
reloj.tick(60)
# Avanzamos y actualizamos la pantalla con todo lo que hemos dibujado
pygame.display.flip()
# Sé bueno con el IDLE
pygame.quit()