Color de fondo, paleta de colores y formas geométricas - Curso Pygame - Capítulo 2


En este segundo capítulo haremos muy buenos avances en el curso. Aprenderás a añadir un color de fondo en la ventana de Pygame, como especificar una paleta de colores y como dibujar unas cuantas formas geométricas.

Crear una paleta de colores para Pygame

colores hexadecimales

Los colores los vamos a especificar en Pygame con colores RGB. Pero antes, una orientación sobre los colores hexadecimales que también los vamos a usar.
En la imagen puedes ver como se escriben los colores básicos en base 16 (hexadecimal).

Si no te interesa la teoría sobre los colores hexadecimales y RGB, sáltate los tres siguientes párrafos.

Entenderlos es muy fácil, todos los colores tienen 6 dígitos con caracteres que van del 0 al 9 y de las letras A a la F (0123456789ABCDEF).
De los colores básicos tenemos el rojo (R de red), el verde (G de green) y el azul (B de blue) formando el famoso RGB.
En estos 6 dígitos, reservamos 2 para cada uno de esos tres colores, los dos primeros para el rojo, los dos siguientes para el verde y los dos últimos para el azul #RRGGBB.

Todos los colores en su valor mínimo (#000000) forman el color negro (ausencia de color). Todos en su máximo valor (#FFFFFF) forman el color blanco (todos los colores juntos).
La mezcla básica entre rojo puro (#FF0000) y verde puro (#00FF00) nos da como resultado el color secundario amarillo (#FFFF00). La mezcla entre el primario verde (#00FF00) y el primario azul (#0000FF) nos da como resultado el color cian (#00FFFF) y finalmente, la mezcla entre el primario rojo (#FF0000) y el primario azul (#0000FF) nos da como resultado el color magenta (#FF00FF).

Colores rgb

Los colores RGB funcionan de la misma forma, pero en lugar de tener esos 6 dígitos, utilizan tres números del 0 al 255. Cada uno de estos números para representar los 3 colores primarios.

Estos son los colores que vamos a utilizar en Pygame.

Por suerte, hay muchas aplicaciones web, móviles y de escritorio para obtener el número hexadecimal de un color.

Aquí tienes el programa gratuito que utilizo en el vídeo: Roselt color picker de la Microsoft store.
También te recomiendo este sitio web si no quieres instalar ningún programa o utilizas otro sistema operativo: www.htmlcolorcodes.com

Como ejemplo, voy a añadir una paleta con algunos colores, tú puedes añadir todos los que vayas a necesitar en tu juego.

Código

BLANCO = (255,255,255)
NEGRO = (0,0,0)
ROJO = (255,0,0)
VERDE = (0,255,0)
AZUL = (0,0,255)
HC74225 = (199,66,37)
H61CD35 = (97,205,53)

Fondo de la pantalla de juego

Empecemos dándole un primer uso a la paleta de colores añadiendo un color de fondo:

Código

pantalla.fill(ROJO)

Con esto ya estaría, pero para que todo lo que aparezca en pantalla se pueda mostrar, tenemos que añadir al bucle del juego (el que vimos en el capítulo anterior) un update, anidado al while. La última línea es la que tienes que añadir.

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            pygame.sys.exit()
    pygame.display.update()

Si ejecutamos, ahora debería salir el fondo rojo o el que hayas puesto.

Fondo de juego

Formas geométricas en Pygame

Rectángulo

Para dibujar un rectángulo en Pygame debes hacerlo con pygame.draw.rect.

Código

pygame.draw.rect(pantalla, ROJO, (100,50,100,50))

El primer argumento es para indicar donde se va a mostrar el rectángulo (en la pantalla), el siguiente para indicar el color (rojo. Ojo , si tienes fondo rojo, no vas a ver un rectángulo rojo, es de lógica, pero si no caes...) el tercer argumento es para indicar la posición en x e y de la pantalla donde aparecerá el rectángulo y las dimensiones en píxeles.

Rectángulo en Pygame

Línea

Vamos a dibujar una línea, para ello, lo hacemos con pygame.draw.line.

Código

pygame.draw.line(pantalla, VERDE, (100,104),(199,104), 1)

El resultado es una línea de 1 píxel de grosor que puedes ver en la imagen:

Línea en Pygame

En los argumentos de la línea tenemos que especificar donde aparecerá (pantalla), en qué color (VERDE). La primera tupla especifica donde empieza la línea en x e y, ahí situa el punto de inicio de la línea (100,104) y con la segunda tupla (199,104), le indicamos hasta qué punto en x e y tiene que dibujar la línea. Finalmente, el último argumento es para especificar el grosor de la línea (1)

En el vídeo puedes ver más formas geométricas y una explicación de la superposición de objetos. Te dejo aquí el código con las formas explicadas en el vídeo.

Código

pygame.draw.line(pantalla, VERDE, (100,104),(199,104), 1)

Código completo del capítulo para copiar y pegar

import pygame

pygame.init()

pantalla = pygame.display.set_mode((500, 400))

pygame.display.set_caption('Mi primer juego :D')

# Paleta de colores
BLANCO = (255,255,255)
NEGRO = (0,0,0)
ROJO = (255,0,0)
VERDE = (0,255,0)
AZUL = (0,0,255)
HC74225 = (199,66,37)
H61CD35 = (97,205,53)

# Fondo de pantalla
pantalla.fill(BLANCO)

# ---- Formas geométricas ----

# Rectángulo
pygame.draw.rect(pantalla, ROJO, (100,50,100,50))

# Línea
pygame.draw.line(pantalla, VERDE, (100,104), (199,104),1)

# Círculo
pygame.draw.circle(pantalla, NEGRO, (122, 250), 20, 0)

# Elipse
pygame.draw.ellipse(pantalla, H61CD35, (275,200,40,80), 10)

# Forma libre ()
puntos = [(100,300), (100,100), (150,100)]

pygame.draw.polygon(pantalla,(0,150,255), puntos, 8)

# Bucle del juego
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            pygame.sys.exit()
    pygame.display.update()
Línea en Pygame

Suscríbete a mi canal de YouTube para apoyarme

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.


Comentarios

Si te quedan dudas sobre el temario, sobre Python, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.