<-- 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)
AZUL = (50, 50, 255)
VERDE = (0, 255, 0)
VERDEOSC = (0, 100, 0)
ROJO = (255, 0, 0)
# Esta clase representa la pelota
# Deriva de la clase "Sprite" en Pygame
class Pelota(pygame.sprite.Sprite):
# 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 pelota 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()
# Actualiza la posición de la pelota
def update(self):
# Obtiene la posición actual del ratón. Devuelve esta posición como
# una lista de dos números.
pos = pygame.mouse.get_pos()
# Extrae los valores x e y de la lista, tal como si extrajéramos letras de una cadena de texto (string).
# OBSERVACIÓN: Si quieres mantener el ratón en el fondo de la pantalla, establece y = 380, y no lo actualices
# con la posición del ratón almacenada en pos[1]
x = pos[0]
y = pos[1]
# Establece el atributo para la esquina superior izquierda donde se ubica el objeto.
self.rect.x = x
self.rect.y = y
pygame.init()
# Establece el alto y largo de la pantalla
dimensiones = [700,500]
pantalla = pygame.display.set_mode(dimensiones)
# Ocultamos el puntero del ratón
pygame.mouse.set_visible(False)
# Iteramos hasta que el usuario haga click sobre el botón de salir.
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 pelota en el programa (solo hay 1) es
# añadida a la lista. La lista es gestionada por la clase 'Group.'
listade_todoslos_sprites = pygame.sprite.Group()
# Esto representa la pelota controlada por el protagonista.
pelota = Pelota()
# Añadimos la pelota a la lista de objetos controlados por el protagonista
listade_todoslos_sprites.add(pelota)
# -------- Bucle Principal -----------
while not hecho:
for evento in pygame.event.get():
if evento.type == pygame.QUIT:
hecho = True
# --- Lógica del juego
listade_todoslos_sprites.update()
# Limpiamos la pantalla
pantalla.fill(BLANCO)
# Actualizamos la posición de la pelota (usando el ratón) y dibujamos la pelota
listade_todoslos_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()
pygame.quit()